2016-12-08 2 views
1

У меня есть некоторые неточности о угловых 2 router guide.угловой 2 направляющей маршрутизатора ленивый модуль

CanDeactivateGuard используется в CrisisCenterRoutingModule, который является частью CrisisCenterModule, который лениво загружается AppRoutingModule (loadChildren: «приложение/кризис-центр/кризис-центр.module # CrisisCenterModule»).

Главный вопрос: Почему должен быть объявлен CanDeactivateGuard в поставщиках приложений AppRoutingModule? почему бы не обратиться к поставщикам CrisisCenterRoutingModule?

Ответ гида: мы также должны добавить Guard к нашим основным поставщикам приложений AppRoutingModule, чтобы маршрутизатор мог вводить его во время процесса навигации.

ответ

0

Ну, похоже, что CanDeactivateGuard может быть предоставлен CrisisCenterRoutingModule, а не AppRoutingModule. Теперь вопрос в том, почему тогда руководство указало AppRoutingModule как тот, который предоставил CanDeactivateGuard? Ответ, который, я думаю, заключается в том, что CanDeactivateGuard - это сервис, полезный для любого модуля, и поскольку у ленивых загружаемых модулей есть свой собственный инжектор корня, это означает, что он будет создан дополнительный экземпляр CanDeactivateGuard для любого ленивого модуля загрузки, который также обеспечил бы его. CanDeactivateGuard не имеет состояния, поэтому бесполезно иметь несколько экземпляров, поэтому лучше добавить его в AppRoutingModule.