Angular4 router.navigate什么都不做

时间:2018-03-20 08:54:45

标签: angular typescript

我根据客户在系统中的角色进行了条件导航。像这样:

this.GetQuickStartStatus()
                    .subscribe(data => {
                            if(data.isActive){
                                this.storageService.Store('isQuick', "true");
                            }
                            else{
                                this.storageService.Store('isQuick', "false");
                            }

                            if(this.storageService.Retrieve("Role") === "user"){
                                console.log("package");
                                this.router.navigate(['/packages']);
                            }

                            if(this.storageService.Retrieve("Role") === "subscriber" && this.storageService.Retrieve("isQuick") === "false"){
                                console.log("quickstart");
                                this.router.navigate(['/quickstart']);
                            }
                            console.log("nothing");
                            this.router.navigate(['']);
                    }, (error) => {
                        console.log(error);
                    });

我使用应该重定向到包页面的新用户进行登录,因为用户角色是“用户。我在控制台中得到他的信息:

  

auth.service.ts:156包
  auth.service.ts:164什么

意义条件受到影响,但没有做任何事情,即路由器无法导航到请求的页面。我检查了所有条件,并且所有值都存储在localstorage中。为什么router.navigate会忽略重定向?

包的路由模块:

@NgModule({
  imports: [
    RouterModule.forChild([
        { path: 'packages', component: PackageComponent, canActivate: [AuthGuardService] },
        { path: 'receipt', component: PackageReceiptComponent, canActivate: [AuthGuardService, RoleSubscriberGuardService] },
        { path: 'receipt/:token', component: PackageReceiptComponent, canActivate: [AuthGuardService, RoleSubscriberGuardService]}
    ])
  ],
  exports: [RouterModule]
})
export class PackageRoutingModule { }

1 个答案:

答案 0 :(得分:1)

您的方法结束时有this.router.navigate(['']); - 每次都会执行。

尝试将此行包装在else块中。