angular @NgModule无法绑定到' model'因为它不是“标签”的已知属性。

时间:2017-12-07 08:38:56

标签: angular typescript

我最初尝试在两个模块中包含一个共享组件作为声明。

  

BatchStatusComponent是2个模块声明的一部分:DashboardModule和ControlJobModule!请考虑搬家......

所以我试图创建一个共同的@NgModule,
我已经宣布了一个共同的模块:

@NgModule({
    imports: [
        CommonModule,
        FormsModule
    ],
    declarations: [
        BatchStatusComponent // moved to here
    ]
})
export class SharedComponentsModule { }

我已将上述模块包含在子模块中,如下所示

@NgModule({
    imports: [
        SharedComponentsModule, // added module
        DashboardRoutingModule,
        CommonModule,
        FormsModule,
        ChartsModule,
        BsDropdownModule
    ],
    providers: [DashboardApiService, IntegrationSignalService],
    declarations: [        
        DashboardComponent,
        // BatchStatusComponent, // removed from here.
        ServiceStatusComponent,
        StatisticsCounterComponent,
        ClearingDashboardComponent
    ]
})
export class DashboardModule {
}

但我现在收到此错误:

  

无法绑定到批处理状态'因为它不是批处理状态的已知属性'。

  1. 如果批量状态'是一个Angular组件,它有批处理状态'输入,然后验证它是否是该模块的一部分。
  2. 如果批量状态'是一个Web组件,然后添加' CUSTOM_ELEMENTS_SCHEMA'到了' @ NgModule.schemas'该组件可以禁止显示此消息。
  3. 我缺少什么?

    当组件作为声明包含时(在DashboardModule中)它可以正常工作。

1 个答案:

答案 0 :(得分:5)

如果您希望其他模块看到它,您还需要导出组件:

@NgModule({
    imports: [
        CommonModule,
        FormsModule
    ],
    declarations: [
        BatchStatusComponent // moved to here
    ],
    exports: [
        BatchStatusComponent 
    ]
})
export class SharedComponentsModule { }

仅供参考,您还可以导出整个模块(即CommonModule),以便下游也可以使用。