当我启动角度应用程序时,出现以下错误,
Error: Template parse errors:
'router-outlet' is not a known element
.....
ng:///LayoutModule/LayoutComponent.html
app.module.ts
@NgModule({
declarations: [
AppComponent
],
imports: [
...
AppRoutesModule,
LayoutModule,
...
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
app-routes.module.ts
@NgModule({
imports: [
RouterModule.forRoot(routes)
],
exports: [
RouterModule
],
declarations: []
})
export class AppRoutesModule{ }
layout.module.ts
@NgModule({
imports: [],
declarations: [LayoutComponent, HeaderComponent]
})
export class LayoutModule { }
我没有故意在RouterModule
中导入LayoutModule
,因为AppRoutesModule
已经导出了它,它应该在LayoutModule
中可用。
有什么不起作用的原因吗?
答案 0 :(得分:2)
npm install --save @angular/material@6.2.1 @angular/cdk@6.2.1
ng add @angular/material@6.2.1
是LayoutComponent
的一部分,因此,将LayoutModule
导入RouterModule
中。因此,角度将LayoutModule
识别为LayoutModule
的一部分。
OR
通过将RouterModule
导入AppRoutesModule
LayoutModule
的一部分。
'export'关键字允许导出类,而'import'关键字实际上导入任何已经导出的类。
答案 1 :(得分:0)
我认为您应该将RouterModule导入到您的主模块中。因为即使从另一个模块导出它,主模块也看不到它。
您的主模块:
applicationContext.getBean(componentClass)
在这种情况下,它将在全局范围内可见。
答案 2 :(得分:0)
您忘记将AppRoutesModule
导入LayoutModule
中。更新后的LayoutModule
如下:
layout.module.ts
@NgModule({
imports: [AppRoutesModule],
declarations: [LayoutComponent, HeaderComponent]
})
export class LayoutModule { }