在我的Angular2应用程序中,我需要根据此调用的结果调用AuthenticationService和bootstrap应用程序中的某些函数。问题是AuthenticationService依赖于来自@ angular / http的HTTP,我对如何在调用bootstrap函数之前手动构建http服务知之甚少。这个问题中接受的答案/taxonomies/category
描述了我想要完美实现的目标,但不幸的是,它被用于Angular2的某些先前版本。
我尝试以这种方式创建http服务:
let injector = ReflectiveInjector.resolveAndCreate(HTTP_PROVIDERS)
let http = injector.get(Http);
但我在XsrfCookieStrategy或类似的东西中得到了空引用异常。我相信有可能注入一些空的XsrfStrategy,但它似乎更像是一个黑客而不是一个好的解决方案。所以问题是:是否有任何好的(官方)方式来引导Angular2应用程序,并提供一些类似于我上面添加的链接的前端依赖。
答案 0 :(得分:1)
class AuthService {
isLoggedIn:BehaviorSubject<boolean> = BehaviorSubject<boolean>(false);
checkLogin(http:Http) {
return http.get(...)
.map(result => result.json())
.do(result => this.isLoggedIn.next(result)
}
}
bootstrap(AppComponent, [
HTTP_PROVIDERS,
AuthService,
{ provide: APP_INITIALIZER,
useFactory: (authService:AuthService) => authService.checkLogin(),
deps: [AuthService],
multi: true
}
]);
另见How to pass parameters rendered from backend to angular2 bootstrap method