В Угловом 2 вы можете указать аннотацию для компонента, в котором вы можете определить, должен ли компонент быть активирован или нет. Причина, по которой это не интерфейс, заключается в том, что обратный вызов вызывается до того, как компонент даже создается. Проблема в том, что я не могу найти способ получить зависимости, введенные в этот обратный вызов. И мне нужна моя служба, которая сообщает мне, вошел ли я в систему или нет (и как кто), чтобы определить, разрешена ли маршрутизация к определенному компоненту или нет.Угловой 2: Вложить зависимость в @CanActivate?
Как я могу вставить зависимость в обратный вызов @CanActivate? Я использую ES5, и это не работает:
app.ListsComponent = ng.router.CanActivate([
app.SessionService,
function(session, instruction) {
console.log(session);
return true;
}
])(app.ListsComponent);
Edit: В качестве альтернативы, можно использовать событие routerOnActivate
жизненного цикла на компоненте, а также использовать this.router.navigate
отправить пользователь прочь, если они не должен будь там. Недостатком является то, что он разбивает историю браузера: если я перенаправляю вас асинхронно каждый раз, когда вы достигаете определенного URL-адреса, вы не можете использовать кнопку «Назад» в своем браузере очень полезно. Есть ли способ использовать router.navigate
history.replaceState
вместо history.pushState
для такого рода ситуаций?
DI должен быть возможен после выпуска [крючки для маршрутизатора впрыскиваются и соответствуют ядру] (https://github.com/angular/angular/issues/7485). В настоящее время вехой является кандидат на угловой 2. –