最新のAngular2 2.1.0で@NgModuleを正しく設定しようとしています。私は他の注射可能なコードに依存する注射可能なコードをいくつか持っており、何らかの理由で依存が初期化されていません。@NgModuleの依存性注入が機能していませんAngular2 2.1.0
アプリが起動し、私は次のエラーを取得する:このケースでcore.umd.js:3076 TypeError: Cannot read property 'getTokenPromise' of undefined at Object.tokenGetter (app.module.ts:68)
未定義のオブジェクトはラインでunifiedLogin
return unifiedLogin.getTokenPromise();
である私はUnifiedLoginログインがAuthHttpに注入され、初期化されていたであろうことを期待それそうではありません。
これはかなり大きなプロジェクトであり、私は関連するコードの断片だけを望んでいます。
この
はapp.modules.tsimport { BrowserModule } from '@angular/platform-browser';
import { HttpModule, Http } from '@angular/http';
import { AppRoutingModule } from './app-routing.module';
import { AuthHttp, AuthConfig } from 'angular2-jwt';
import { UnifiedLogin } from './unified-login';
import { AppComponent } from './app.component';
...
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
HttpModule,
AppRoutingModule
],
providers: [
UnifiedLogin,
{
provide: AuthHttp,
useFactory: (http: Http, unifiedLogin: UnifiedLogin) => {
return new AuthHttp(new AuthConfig({
tokenGetter: (() => {
return unifiedLogin.getTokenPromise();
})
}), http);
},
deps: [UnifiedLogin]
}
],
bootstrap: [AppComponent]
})
export class AppModule { }
ここで私は初期化され、AuthHttpに注入されると予想さUnifiedLoginコードがあるから問題のある私@NgModule文の部分ですが、
ませんでしたimport { Injectable } from '@angular/core';
...
@Injectable()
export class UnifiedLogin {
...
public getTokenPromise(): Promise<string> {
return this._storage.get('id_token');
}
}