Angular2 - 我的模块如何导入和使用另一个模块?

时间:2016-11-10 20:09:36

标签: angular angular2-modules

我的组件ListingComponent使用名为MemberCountryFilter的组件。我有这个模块,一切正常。

@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 =”让selectMemberCountries的smc“>

看来,ListingComponent不知道MemberCountryFilter是什么。显然,我对模块有些不了解。我已经阅读了文档,我认为我正确地做到了。

FilterModule中的导出应该使MemberCountryFilter可用。然后我在ListingSharedModule中导入它,并导出它,使其可用于ListingComponent。

对于基本概述,我将MemberCountryFilter作为声明(带导出)并且它有效。我将它移动到另一个模块,然后导入和导出该模块,但它不起作用。

我错过了什么?

1 个答案:

答案 0 :(得分: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 { }