在我的真实世界应用程序中,如果用户通过身份验证,我想检查启动组件(通常是app.component.ts)。如果没有,我想将它们路由到登录组件。但路由在这里不起作用。
我创建了一个简单的Plunker示例,它可以重现:
app/app.component.ts
中已有相同的路由命令 - 但是应用程序没有路由到组件。为什么?? 感谢您的帮助!
答案 0 :(得分:1)
如果用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()
后卫作为默认路线并在那里执行R
。