2016-11-10 5 views
2

В моем компоненте, ListingComponent, используется компонент MemberCountryFilter. У меня есть этот модуль, и все работает.Angular2 - Как мой модуль импортирует и использует другой модуль?

@NgModule({ 
    imports: [CommonModule, RouterModule, FormsModule, ReactiveFormsModule], 
    declarations: [ListingComponent, MemberCountryFilter], 
    exports: [ListingComponent,MemberCountryFilter,], 
    providers: [] 

}) 
export class ListingComponent { } 

Я понял, что другому модулю в скором времени понадобится компонент MemberCountryFilter, поэтому я реорганизую. Я создал этот модуль для компонента MemberCountryFilter, и я хочу импортировать его в другие модули.

@NgModule({ 
    imports: [], 
    declarations: [MemberCountryFilter], 
    exports: [MemberCountryFilter], 
    providers: [] 
}) 
export class FilterModule { } 

Я изменил свой первоначальный модуль к этому:

@NgModule({ 
    imports: [CommonModule, RouterModule, FormsModule, ReactiveFormsModule, FilterModule], 
    declarations: [ListingComponent], 
    exports: [ListingComponent, FilterModule,], 
    providers: [] 

}) 
export class ListingComponent { } 

После этого я получаю неопределенные ошибки шаблона синтаксического анализа, как это:

zone.js: 355 Неизвестное Promise отказ: Шаблон parse errors: Can not связываться с 'ngForOf', так как это не известное свойство 'ul'. («] * NgFor =» пусть НМЦ selectedMemberCountries ">

Оказывается, что ListingComponent не знает, что MemberCountryFilter есть. Очевидно, что есть что-то я не понимаю, о модулях. Я прочитал документацию, и я думаю, Я делаю это правильно.

на экспорт в FilterModule должны MemberCountryFilter доступны. Затем я импортировать его в ListingSharedModule, и экспортировать его, которые должны сделать его доступным для ListingComponent.

для общего обзора, я был MemberCountryFilter, как объявление (с экспортом), и оно сработало. Я переместил его в другой модуль, затем импортировал и xport, но он не работает.

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

+1

директива NgFor принадлежит CommonModule, который импортируется из BrowserModule, может быть, вам следует импортировать BrowserModule в листингеSharedModule – Alcruz

+0

CommonModule в ссылке api https://angular.io/docs/ts/latest/api/common/index/CommonModule-class.html – Alcruz

+0

У меня есть CommonModule в качестве импорта. Я оставил их для краткости. Я обновлю сообщение. В основном, он работал, затем я удалил MemberCountryFilter и заменил его на этот FilterModule, и он перестает работать. Я не хотел загромождать сообщение множеством несвязанных предметов. –

ответ

1

Я имел подобную ошибку раньше, что случилось со мной было, я пропустил import { CommonModule } from '@angular/core' в моем *.module.ts файл, для вашего FilterModule, пожалуйста, попробуйте следующее:

import { CommonModule } from '@angular/core'; 
@NgModule({ 
    imports: [CommonModule], 
    declarations: [MemberCountryFilter], 
    exports: [MemberCountryFilter], 
    providers: [] 
}) 
export class FilterModule { } 
+0

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

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