angular 2路由器引导懒惰模块

时间:2016-12-08 09:55:54

标签: angular

我对角度2 router guide有一些不清楚。

CanDeactivateGuard用于CrisisCenterRoutingModule,它是CrisisCenterModule的一部分,由AppRoutingModule延迟加载(loadChildren:' app / crisis-center / crisis-center.module#CrisisCenterModule')。

主要问题: 为什么要在AppRoutingModule提供程序中声明CanDeactivateGuard?为什么不去CrisisCenterRoutingModule提供商?

指南的答案是:我们还需要将Guard添加到我们的主AppRoutingModule提供程序中,以便路由器可以在导航过程中注入它。

1 个答案:

答案 0 :(得分:0)

嗯,似乎确实CanDeactivateGuard也可以由CrisisCenterRoutingModule而不是AppRoutingModule提供。 现在的问题是为什么然后指南指出AppRoutingModule是提供CanDeactivateGuard的那个? 答案我猜是CanDeactivateGuard是一个对任何模块都有用的服务,因为延迟加载的模块有自己的根注入器,这意味着它将为任何提供它的延迟加载模块创建一个额外的CanDeactivateGuard实例。 CanDeactivateGuard没有状态,因此拥有多个实例是没用的,所以最好把它放在AppRoutingModule中。