2016-11-10 85 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未處理的承諾拒絕:模板解析錯誤:不能將 綁定到'ngForOf',因爲它不是'ul'的已知屬性。 (「] * ngFor =」讓selectedMemberCountries的SMC「>

看來ListingComponent不知道MemberCountryFilter是什麼。顯然,有件事我不理解的模塊。我已經閱讀文檔,我想我做正確。

在FilterModule出口應MemberCountryFilter可用。然後,我將其導入ListingSharedModule,然後導出它應該將其提供給ListingComponent。

對於基本概況,我MemberCountryFilter爲一個聲明(帶出口)並且工作,我把它移到另一個模塊中,然後導入和e xport該模塊,但它不起作用。

我錯過了什麼?

+1

NgFor指令屬於CommonModule是從BrowserModule進口的,也許你應該在API參考https://angular.io/docs/ts/latest/api/common/index/CommonModule-class.html – Alcruz

+0

CommonModule BrowserModule我有CommonModule作爲進口。爲了簡潔,我將它們排除在外。我會更新帖子。基本上,它正在工作,然後我刪除了MemberCountryFilter並將其替換爲該FilterModule並停止工作。我不想讓很多無關項目混亂。 – Alcruz

+0

導入上ListingSharedModule –

回答

1

我收到了類似的錯誤,是什麼發生在我身上是我在*.module.ts文件, 錯過import { CommonModule } from '@angular/core'FilterModule,請試試這個:

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

這就是答案。我認爲通用模塊需要在使用時加載,而且是這樣。但是現在我知道它需要在它使用的模塊中加載。 –