【发布时间】:2017-03-07 05:29:24
【问题描述】:
我使用 APP_INITIALIZER 从服务器加载数据并使用 CanActivate 保护。我使用 Angular 2.4.8,我看到我的后卫中的 CanActivate 在 APP_INITIALIZER 完成调用验证函数之前被调用...
这是正确的行为吗?
{ provide: APP_INITIALIZER, useFactory: (config: ContextService) => () => config.validate(), deps: [ContextService], multi: true }
函数 config.validate() 返回一个承诺。代码在这里
validate() {
return Observable.forkJoin(
this.http.get('/api/v1/check').map(res => res.json()),
this.http.get('/api/v1/me').map(res => res.json())
).map(
data => {
console.log("data loaded");
... stuff ...
return this.hasValidLicence;
}).toPromise();
}
谢谢
【问题讨论】:
-
自github.com/angular/angular/pull/14681 以来已修复此问题。请尝试 Angular 2.4.9。它应该工作正常。谢谢。 :)
标签: angular