添加了通配符路由,但仍用于未定义的路由 Cannot GET /

Wildcard route added but still for undefined route Cannot GET /

我在我的项目中使用 Angular 6。我添加了通配符路由,但当我转到任何未定义的路由 angular 在浏览器中给出 Cannot GET /<path> 时,我仍然面临错误。

下面是我的路线,所有其他定义的路线都工作得很好,但通配符不工作

const AppRoutes: Routes = [
 { path: '', redirectTo: 'login', pathMatch: 'full' },
 { path: "register", component: RegisterComponent },
 { path: "login", component: LoginComponent },
 { path: "dashboard", component: DashboardComponent, canActivate: [AuthGuard] },
 { path:"backup",component:BackupComponent},
 { path: '**', component: NotFoundComponent },
];

默认导入路由..

imports: [
 BrowserModule,
 ReactiveFormsModule,
 NgxPaginationModule,
 .
 .
 . 
 RouterModule.forRoot(AppRoutes),
],

出于某种原因我无法使用基于哈希的路由

//Can not use hash base routing in my case
RouterModule.forRoot(AppRoutes, { useHash: true }),

我相信通配符应该在没有基于哈希的路由的情况下工作。让我知道哪里出错了。

您定义的路由似乎没有问题。但是,check this article 基于哈希的路由存在问题。

这个你可以尝试用两种方法解决:

  1. 尝试改变父路由和外卡路由的顺序如
const AppRoutes: Routes = [
 { path: "register", component: RegisterComponent },
 { path: "login", component: LoginComponent },
 { path: "dashboard", component: DashboardComponent, canActivate: [AuthGuard] },
 { path:"backup",component:BackupComponent},
 { path: '', redirectTo: 'login', pathMatch: 'full' },
 { path: '**', component: NotFoundComponent },
];
  1. redirectTo 用于 NotFoundComponent

详情请查看这篇文章WildCardRoutes

谢谢

我 运行在 NodeJS 中使用后端 运行ning Angular 和 Node 通过 ng-build 和节点 app.js 在同一端口 app.js 当我 运行 angular 使用 ng serve 它工作正常,但使用 ng build 则不行,但在生产中一切看起来都很好并且通配符按预期工作。