Angular 11 - RouterModule - 'router-outlet' 不是已知元素
Angular 11 - RouterModule - 'router-outlet' is not a known element
我是 Angular 的新人,目前我正在处理路由。我 运行 遇到在组件中使用子路由的问题。 routerLink 在组件中未呈现为 link。如果我使用路由器插座,应用程序会崩溃。
使用路由器插座时,我收到以下错误消息:
src/app/gardening/gardening/gardening.component.html:5:1 - error NG8001: 'router-outlet' is not a known element:
1. If 'router-outlet' is an Angular component, then verify that it is part of this module.
2. If 'router-outlet' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
5 <router-outlet></router-outlet>
~~~~~~~~~~~~~~~
src/app/gardening/gardening/gardening.component.ts:5:16
5 templateUrl: './gardening.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component GardeningComponent.
我用谷歌搜索了错误消息,解决方案总是缺少模块中 RouterModule 的导入。我已经导入了 RouterModule。
这是我的module.ts
@NgModule({
declarations: [GardeningComponent, DemogardenComponent],
imports: [
CommonModule, RouterModule
],
exports:[GardeningComponent, DemogardenComponent]
})
export class GardeningModule { }
这是我的应用程序。module.ts
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
怎么了,漏了什么?
如果你愿意,你也可以在 github 上查看我的存储库中的代码:SimpleRouting
我没有看到与您提到的完全相同的错误,但我看到了与缺少导入有关的其他问题。
由于 Home
和 Gardening
有单独的模块,您还需要将它们导入 app.module.ts
文件:
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule,
GardeningModule, // <------
HomeModule // <------
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
经过这两个小改动后,您的代码可以正常工作。 (工作StackBlitz)
你的问题是因为应用程序模块不知道你的园艺模块。
所以你得到当前 router-outlet
错误。
这是解决方案 - 只需像这样更新 app.module.ts
文件:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { GardeningModule } from './gardening/gardening.module'; // <=============
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule,
GardeningModule // <=============
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
我是 Angular 的新人,目前我正在处理路由。我 运行 遇到在组件中使用子路由的问题。 routerLink 在组件中未呈现为 link。如果我使用路由器插座,应用程序会崩溃。
使用路由器插座时,我收到以下错误消息:
src/app/gardening/gardening/gardening.component.html:5:1 - error NG8001: 'router-outlet' is not a known element:
1. If 'router-outlet' is an Angular component, then verify that it is part of this module.
2. If 'router-outlet' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
5 <router-outlet></router-outlet>
~~~~~~~~~~~~~~~
src/app/gardening/gardening/gardening.component.ts:5:16
5 templateUrl: './gardening.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component GardeningComponent.
我用谷歌搜索了错误消息,解决方案总是缺少模块中 RouterModule 的导入。我已经导入了 RouterModule。
这是我的module.ts
@NgModule({
declarations: [GardeningComponent, DemogardenComponent],
imports: [
CommonModule, RouterModule
],
exports:[GardeningComponent, DemogardenComponent]
})
export class GardeningModule { }
这是我的应用程序。module.ts
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
怎么了,漏了什么?
如果你愿意,你也可以在 github 上查看我的存储库中的代码:SimpleRouting
我没有看到与您提到的完全相同的错误,但我看到了与缺少导入有关的其他问题。
由于 Home
和 Gardening
有单独的模块,您还需要将它们导入 app.module.ts
文件:
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule,
GardeningModule, // <------
HomeModule // <------
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
经过这两个小改动后,您的代码可以正常工作。 (工作StackBlitz)
你的问题是因为应用程序模块不知道你的园艺模块。
所以你得到当前 router-outlet
错误。
这是解决方案 - 只需像这样更新 app.module.ts
文件:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { GardeningModule } from './gardening/gardening.module'; // <=============
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule,
GardeningModule // <=============
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }