在我的真实世界应用程序中,如果用户经过身份验证,我想检查启动组件(通常是 app.component.ts)。如果没有,我想将它们路由到登录组件。但是路由在这里不起作用。
我创建了一个简单的 Plunker 示例,它是可复制的:
- 打开现场示例
- 单击按钮“导航到样本 1”-> 一切正常
- 但是您可以看到,我已经在
app/app.component.ts
- 但应用程序没有路由到组件中具有相同的路由命令。为什么??
谢谢你的帮助!
在我的真实世界应用程序中,如果用户经过身份验证,我想检查启动组件(通常是 app.component.ts)。如果没有,我想将它们路由到登录组件。但是路由在这里不起作用。
我创建了一个简单的 Plunker 示例,它是可复制的:
app/app.component.ts
- 但应用程序没有路由到组件中具有相同的路由命令。为什么??谢谢你的帮助!
如果你用它包装它setTimeout()
工作正常
setTimeout(() => {
this.router.navigate(["/sample1", "2"]);
});
似乎默认路由发生在您调用之后router.navigate()
,因此不会生效。
我确信有更好的方法来实现相同的目标,setTimout()
但我认为证明这个问题很好。
例如,这将导致相同的行为
RouterModule.forRoot([
{ path: "", redirectTo: '/sample1/2', pathMatch: 'full' }
{ path: "sample1/:param1", component: Sample1Component },
{ path: "**", component: HomeComponent }
])
您还可以canActivate
对默认路由使用警卫并在router.navigate()
那里执行。