2016-09-08 3 views
3

Приложение My Angular2 RC6 имеет два модуля, и я не уверен, как объявить общий компонент.Angular2 Компонент, объявленный в нескольких модулях

У меня есть компонент с именем spinnerComponent, который используется во всем приложении. Я определил его в app.modules.as:

@NgModule({ 
    imports: [BrowserModule, routing,RepairReturnModule], 
    providers: [ ], 
    declarations: [AppComponent,SpinnerComponent], 
    bootstrap: [AppComponent] 
}) 

Тогда в RepairreturnModule я определяю его снова, как:

@NgModule({ 
    imports: [CommonModule], 
    declarations: [ 
     SpinnerComponent 
    ], 
    providers: [] 
}) 

Как и ожидалось, я получаю:

Тип SpinnerComponent является частью декларации 2 модулей: RepairReturnModule и AppModule

я удалил SpinnerComponent из декларации в RepairreturnModule как тогда я получаю:

Unhandled Promise отказ: синтаксический анализ ошибок шаблона: Невозможно привязать к «isRunning», так как он не является известным свойством «вращателя-компонента ». 1. Если «компонент-счетчик» является угловым компонентом и имеет вход «isRunning», проверьте, что он является частью этого модуля. 2. Если «spinner-component» является веб-компонентом, добавьте «CUSTOM_ELEMENTS_SCHEMA» в «@ NgModule.schema» этого компонента , чтобы подавить это сообщение. ... который указал, что он не объявлен.

Что мне не хватает?

+1

Вы пробовали положить SpinnerComponent в свой собственный модуль, а затем импортировать * что * модуль в двух других модулей? –

ответ

0

Видя полный код будет полезным, но все равно ...

Вы можете попытаться переместить кок обратно в ремонт модуля и импортировать его оттуда в модуле приложения. Я использую отдельный (в вашем случае это третий) «общий» модуль, где общая функциональность сидит, чтобы каждый другой модуль мог импортировать его оттуда.

+0

Поскольку он используется повсюду, я думал, что могу поместить его в главное приложение.module. У меня уже был общий модуль, поэтому я просто положил его туда, как вы предлагали. –

+0

Да, вы не можете импортировать форму корневого модуля приложения, но корневой модуль может импортировать из других модулей. – rook

1

Вы также можете оставить SpinnerComponent в RepairReturnModule, так как он импортируется в основном модуле приложения, но также добавляется в массив «export» модуля. После этого просто удалите его из объявлений модуля App.

https://angular.io/docs/ts/latest/cookbook/ngmodule-faq.html#!#q-what-to-export

4

Добавить exports: [SpinnerComponent] в ваших app.modules NgModules декоратора.

Ссылки: https://angular.io/docs/ts/latest/guide/architecture.html,

`` ` NgModule является функцией декоратора, который принимает один объект метаданных, свойство которого описывает модуль. Наиболее важные свойства являются:

...

экспорта - подмножество деклараций, которые должны быть видимыми и использовать в шаблонах компонентов других модулей.

...

`` `

Смежные вопросы