模板解析错误:'router-outlet'不是已知元素

时间:2018-03-22 19:53:42

标签: angular

我无法弄清楚为什么会这样。从我所看到的,我正在正确导入所有内容。我已经回答了其他问题并多次看过这个问题。我可能错过了一些非常简单而且没有看到的东西。我可以获得一些帮助,说明为什么我会收到此错误吗?

app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MaterialModule } from './material.module';

import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { DashboardComponent } from '../dashboard/dashboard.component';


@NgModule({
  declarations: [
    AppComponent,
    DashboardComponent
  ],
  imports: [
    BrowserModule,
    BrowserAnimationsModule,
    MaterialModule,
    AppRoutingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

app-routing.module.ts:我没有从项目开始创建这个,这就是为什么我可能会遗漏一些东西。

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule, Routes } from '@angular/router';

import { DashboardComponent } from '../dashboard/dashboard.component';

const routes: Routes = [
  { path: '', component: DashboardComponent }
];

@NgModule({
  imports: [
    CommonModule,
    RouterModule.forRoot(routes)
  ],
  declarations: []
})
export class AppRoutingModule {

}

在app.component.html中,我放置了<router-outlet></router-outlet>

2 个答案:

答案 0 :(得分:5)

你应该告诉angular你将使用来自RouterModule的指令。 也就是说,您应该在RouterModule中导入AppModule或从RouterModule导出AppRoutingModule。第二个选项更可取,因为您将所有与路由内容相关的内容保存在一个位置。

@NgModule({
  imports: [
    CommonModule,
    RouterModule.forRoot(routes)
  ],
  exports: [RouterModule]   <==== add this
})
export class AppRoutingModule {}

答案 1 :(得分:1)

您必须导出路由器模块,以便app.module.ts可以从app.routing.ts模块访问导入的模块。

@NgModule({
  imports: [
    CommonModule,
    RouterModule.forRoot(routes)
  ],
  declarations: [],
  exports: [RouterModule]
})

在官方documentation中有人说:

  

最后,重新导出 Angular RouterModule,方法是将其添加到模块中   导出数组。通过 重新导出 这里的RouterModule并导入   AppModule中的AppRoutingModule,AppModule中声明的组件   将有权访问路由器指令,如RouterLink和   RouterOutlet。