当从 Angular 的 @CanActivate
Hook 访问该服务时,我无法找到访问该服务并正确配置其依赖项的方法。
在实例化组件之前,我需要首先检查用户是否已通过身份验证。我的钩子(Hook)看起来像:
import {AuthenticationService} from '../authentication/authentication.service';
.................
@CanActivate((next, prev) => {
var injector = Injector.resolveAndCreate([
AuthenticationService
])
var authService = injector.get(AuthenticationService);
return authService.getUser();
})
export class ShellComponent { }
我收到的错误是异常:没有 Http 提供程序! (AuthenticationService -> Http)
。应该注意的是,HTTP_PROVIDERS
在应用程序引导时注入(inject)。
我的身份验证服务如下:
import {Injectable} from 'angular2/core';
import {Http} from 'angular2/http';
@Injectable()
export class AuthenticationService {
constructor(private _http:Http) {}
getUser() {
var resolver = function(resolve, reject) {
setTimeout(function doneCounting() {
resolve(true);
}, 5000);
}
return new Promise<Boolean>(resolver);
}
}
任何帮助或见解将不胜感激。
最佳答案
您所需要做的就是将此依赖项添加到resolveAndCreate,因此您的代码将是:
var injector = Injector.resolveAndCreate([HTTP_PROVIDERS, AuthenticationService])
关于javascript - 访问 @CanActivate 钩子(Hook)中的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34482310/