我正在运行一个角度4的应用程序。我对我的应用程序中的路由分别有一个特定的要求。
我有路线&路由参数如/create/claim
,/view/claim/:id
等。这些传统的路由方法工作正常。
我需要路由到页面(例如:仪表板页面),在页面名称之前给出param
。例如
http://.../dashboard <--- this is working & loads dashboard module.
http://.../:client-name/dashboard <-- I need to know how to load dashboard module, after getting client-name information from database.
如果有人遇到这样的要求,请告诉我。如果需要其他信息,我会提供。
答案 0 :(得分:0)
我认为您看到的答案是延迟加载和使用警卫。
延迟加载:将使您的仪表板独立,只有在您前往特定路线时才可访问。更多信息:
https://angular.io/guide/ngmodule#lazy-loading-modules-with-the-router
警卫:这里将是您的数据请求,因为每次您去路线时警卫都会拦截。在前往路线之前,您可以进行呼叫并验证。
一个例子
const APP_ROUTES: Routes = [
{
path: 'dashboard',
loadChildren: 'app/dashboard/dashboard.module#DashboardModule',
}, {
path: 'dashboard',
runGuardsAndResolvers: 'always',
canActivate: [AuthGuard],
loadChildren: 'app/home/home.module#HomeModule'
}, {
path: 'auth',
loadChildren: 'app/auth/auth.module#AuthModule'
}
];
我们的警卫就像这样
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot):
Observable<boolean> | Promise<boolean> | boolean {
if (this.authservice.isAuthenticated()){
return true;
} else {
this.router.navigate(['auth/signIn'], {});
}
}
希望它有所帮助。