Angular 默认为“路由”和“**”的 404 路由未按预期工作

Angular routing with default as '' route and '**' for 404 not working as expected

在我的 app-routing.module 文件中,我有一些子路由,一个用于默认登录页面的空路由和一个用于 404 页面的“**”路由。

给出下面的代码

const routes: Routes = [
  {
    path: 'dashboard',
    loadChildren: () => import('<module path>').then(mod => mod.<module name>)
  },
  {
    path: 'customer',
    loadChildren: () => import('<module path>').then(mod => mod.<module name>)
  },
  {
    path: 'user',
    loadChildren: () => import('<module path>').then(mod => mod.<module name>)
  },
  {
    path: '',
    loadChildren: () => import('<module path>').then(mod => mod.<module name>)
  },
  {
    path: '404',
    component: PageNotFoundComponent,
    canActivate: null
  },
  {
    path: '**',
    redirectTo: '/404',
    canActivate: null
  }

];

通过使用此代码,我无法转到 404 页面,因为它总是会重定向到路由 ('') 页面。 然后我更改了顺序路由并在最后添加空('')路由然后 404 工作但是 事件根空('') URL(http://localhost:4200)重定向至 404 URL。有什么方法可以保留空的 URL 用于登录并使 404 正常工作?

要始终避免“”路径重定向:

{
    path: '',
    loadChildren: () => import('<module path>').then(mod => mod.<module name>)
    pathMatch: 'full'
}

还有一个建议,我会为所有意外路由保留“**”路径以简化您的代码:

{
    path: '**',
    component: PageNotFoundComponent
}

如果你不使用守卫,你可以删除 "canActivate":)