导航时,canActivate

时间:2018-07-27 14:53:17

标签: dart angular-dart angular-dart-routing

我在angular_router上遇到了一些奇怪的问题。

我的AdminComponent具有canActivate测试,在该测试中将检查用户是否已登录。如果未登录,它将重定向到登录页面。除此之外,管理模板还具有* ngIf =“ isAllowed”(在canActivate上设置),以防止在此检查之前创建子组件。

问题是,当用户位于以admin为父级的页面中时,该用户被登录并尝试导航到另一个也是admin组件的子页面的页面。

例如,当前的管理组件具有hashCode 123,并且用户已登录。一切都很好。 canActivate工作正常,当isAllowed设置为true时,我们可以在控制台中看到hashCode 123。在管理组件的模板中,它还打印123 hashCode。到目前为止,一切都很好。

然后,我们尝试导航到以管理组件为父页面的另一个页面。调用canACtivate并打印hashCode 123,允许用户查看页面。
问题出在哪里。因为令牌有效,所以CanActivate允许用户使用,但是在管理模板中打印的hashCode不相同。 结果是CanActivate可以使用户正常,但是模板不正确,因为isAllowed为false。

如果我使用新的URL刷新页面,则一切正常。问题出在导航上。

您可以在图像中看到canActivate hashCode与模板显示的hashCode不同,并且它们应该是同一对象。

Dart VM版本:2.0.0-dev.62.0(2018年6月13日星期三16:50:22 +0200)on“ macos_x64”
angular_router 2.0.0-alpha + 14
角5.0.0-alpha + 15

hash not the same

1 个答案:

答案 0 :(得分:1)

AdminComponent必须扩展或实现CanReuse,以允许在其子级导航之间重用同一实例。