Javascript 条件路由更改角度2中的默认路由

Javascript 条件路由更改角度2中的默认路由,javascript,angular,typescript,angular2-routing,Javascript,Angular,Typescript,Angular2 Routing,我正在创建一个应用程序,当用户进入页面时,他会进入默认路径,即“登录”页面。我想要的是基于一个条件(如果用户具有本地存储变量id,则称为isAuthenticated()的方法在不为false的情况下返回true)用户必须看到“Polls”页面而不是“Login”页面。 我认为有两种不同的方法可以解决这个问题: 1-更改默认页面:如果方法返回true,则默认页面应为“Polls”,如果不是“Login” 2-重定向用户:如果方法返回true,则将用户重定向到“轮询” 什么是解决这个问题的最好办法

我正在创建一个应用程序,当用户进入页面时,他会进入默认路径,即“登录”页面。我想要的是基于一个条件(如果用户具有本地存储变量id,则称为isAuthenticated()的方法在不为false的情况下返回true)用户必须看到“Polls”页面而不是“Login”页面。 我认为有两种不同的方法可以解决这个问题:

1-更改默认页面:如果方法返回true,则默认页面应为“Polls”,如果不是“Login”

2-重定向用户:如果方法返回true,则将用户重定向到“轮询”

什么是解决这个问题的最好办法? 我如何做一个或两个点来获得条件路由

这是我使用isAuthenticated()方法的路由配置:

你可以办理登机手续

  • 并使用
    router.navigate()

  • 或者创建一个自定义的
    ,您可以在其中执行此操作

详情请参阅

另请参见

路由器具有
加载程序
参数:

loader : () => Promise<Type>
加载程序:()=>承诺
这允许动态和异步地确定组件类型。

最好采用哪种方法,@CanActivate()还是自定义路由器出口?从我在文章中使用@CanActivate()所读到的内容来看,“目前beta.8版中此功能的一个严重缺陷…要访问DI,我们需要一些技巧才能使其正常工作”,但现在我们正处于beta 14版,无论如何,创建路由器出口似乎更容易,对吗?
@CanActivate()
中的DI仍然需要技巧。路由器目前正在返工,这是一个计划修复的问题。如果对大多数路由或路由组件有不同的检查,我会选择
@CanActivate()
,如果对所有(或大多数)组件进行相同的检查(如
isLoggedIn
),我会选择自定义
。我使用post:activate(指令:ComponentInstruction){If(this._canActivate(instruction.urlPath)){return super.activate(instruction);}this.router.navigate(['Login']);}但是当它转到else语句并尝试导航到Login时,它在activate方法中不断循环,导致应用程序崩溃。
loader : () => Promise<Type>