Angular 11 所有页面都转到 404
Angular 11 all pages going to 404
我正在为我的新项目使用 Angular,它有 3 个模块,所以我决定分成 3 个模块。这是我的应用路由模块
const routes: Routes = [
{
path: '', component: LayoutDefaultComponent, pathMatch: 'full', children: [
{ path: '', component: OverviewComponent },
]
},
// 404 Not Found page
{ path: '**', component: NotFoundComponent }
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
这工作正常。之后我创建了另一个模块及其单独的路由,如下所示
const routes: Routes = [
{
path: 'user',
component: LayoutDefaultComponent,
pathMatch: 'full',
children: [
{ path: '', component: UserOverviewComponen},
],
},
];
这是用户路由模块并在用户模块中导入,如下所示
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class CloudRoutingModule { }
这是我的用户模块
imports: [
CommonModule,
UserRoutingModule,
SharedModule
],
这是我的 app.module.ts 文件
@NgModule({
declarations: [
AppComponent,
NotFoundComponent,
// Pages
OverviewComponent,
HelpCenterComponent,
ChangelogComponent,
],
imports: [
BrowserModule,
HttpClientModule,
NgbModule,
FlexLayoutModule,
Ng2ChartsModule,
PerfectScrollbarModule,
NgxDatatableModule,
TagInputModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
}),
// App
AppRoutingModule,
LayoutModule,
// Auth Module
AuthModule,
// Apps
UserModule
],
providers: [
Title,
AppService,
{
provide: HTTP_INTERCEPTORS,
useClass: AuthInterceptorService,
multi: true
}
],
bootstrap: [
AppComponent
]
})
export class AppModule {}
但是如果我点击用户 link 会自动重定向到 404 页面。我找不到问题所在。谁能帮忙解决问题。
提前致谢
因为路由模块导入顺序错误。把AppRoutingModule
放到最下面
LayoutModule,
// Auth Module
AuthModule,
// Apps
UserModule,
AppRoutingModule
如果您将 AppRoutingModule
置于包含此行的任何其他模块之上:
{ path: '**', component: NotFoundComponent }
Angular 当这条路由匹配时,路由器不会查看任何其他路由,正如您所猜测的那样,这将始终匹配 url.
您可以在此处找到文档中的相关部分:https://angular.io/guide/router#route-order
我正在为我的新项目使用 Angular,它有 3 个模块,所以我决定分成 3 个模块。这是我的应用路由模块
const routes: Routes = [
{
path: '', component: LayoutDefaultComponent, pathMatch: 'full', children: [
{ path: '', component: OverviewComponent },
]
},
// 404 Not Found page
{ path: '**', component: NotFoundComponent }
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
这工作正常。之后我创建了另一个模块及其单独的路由,如下所示
const routes: Routes = [
{
path: 'user',
component: LayoutDefaultComponent,
pathMatch: 'full',
children: [
{ path: '', component: UserOverviewComponen},
],
},
];
这是用户路由模块并在用户模块中导入,如下所示
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class CloudRoutingModule { }
这是我的用户模块
imports: [
CommonModule,
UserRoutingModule,
SharedModule
],
这是我的 app.module.ts 文件
@NgModule({
declarations: [
AppComponent,
NotFoundComponent,
// Pages
OverviewComponent,
HelpCenterComponent,
ChangelogComponent,
],
imports: [
BrowserModule,
HttpClientModule,
NgbModule,
FlexLayoutModule,
Ng2ChartsModule,
PerfectScrollbarModule,
NgxDatatableModule,
TagInputModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
}),
// App
AppRoutingModule,
LayoutModule,
// Auth Module
AuthModule,
// Apps
UserModule
],
providers: [
Title,
AppService,
{
provide: HTTP_INTERCEPTORS,
useClass: AuthInterceptorService,
multi: true
}
],
bootstrap: [
AppComponent
]
})
export class AppModule {}
但是如果我点击用户 link 会自动重定向到 404 页面。我找不到问题所在。谁能帮忙解决问题。
提前致谢
因为路由模块导入顺序错误。把AppRoutingModule
放到最下面
LayoutModule,
// Auth Module
AuthModule,
// Apps
UserModule,
AppRoutingModule
如果您将 AppRoutingModule
置于包含此行的任何其他模块之上:
{ path: '**', component: NotFoundComponent }
Angular 当这条路由匹配时,路由器不会查看任何其他路由,正如您所猜测的那样,这将始终匹配 url.
您可以在此处找到文档中的相关部分:https://angular.io/guide/router#route-order