Note 使用相关代码段进行编辑

我遇到了一个奇怪的问题,我在发出router.navigate时遇到无限重定向循环 .

Setup

  • 我使用哈希位置策略,该应用程序用作Outlook插件 .

  • 我有三个路由规则

  • “" redirect to " / login”

  • "/login"映射到LoginViewComponent

  • "/foo"已映射到FooViewComponent

  • LoginViewComponent有两个行为:

  • 如果无法验证用户的身份,系统将提示用户输入凭据

  • 如果没有向FooViewComponent发出重定向

  • 重定向只是使用以下逻辑位发出:

this.router.navigate(["foo"])

  • 路线注册如下:

const routes: Routes = [
    {
       path: "",
       redirectTo: "login",
       pathMatch: "full"
    },
    {
        path: "login",
        component: LoginViewComponent
    },
    {
        path: "foo",
        component: FooComponentView
    }
];

@NgModule({
    imports: [RouterModule.forRoot(routes, { useHash: true,  enableTracing: true})],
    exports: [RouterModule]
})
export class AppRoutingModule { }

Problem

  • 当我在LoginViewComponent的ngOnInit函数中发出重定向时,我进入了一个无限重定向循环 .

  • 它首先导航到FooViewComponent,然后重定向回LoginViewComponent .

  • 据我所知,只有在调用router.navigate([" "])或router.navigate(["login"])时才能重定向到LoginViewComponent . 但是,这些导航命令都不存在于FooViewComponent中 .

angulart2-router-infinite-redirect-loop