2016-12-23 3 views
0

私はここに、このいずれかを、次の午前How do I set default Http Headers for all requests in Ionic 2?Ionic2デフォルトのHTTPヘッダ

これは正常に動作し、すべてのHTTPで私が入れヘッダを渡し、それを呼び出します。 しかし、私の問題は、このMyRequestOptionsコンストラクタに任意のサービスを注入すると、このサービスは定義されていないため、使用できません...

誰でも知っていますか? JWTトークンを置くためにカスタムAuthServiceをここに注入する必要があります。

答えて

2

BaseReqestOptions@Injectableを使用します。この場合、サブクラスのコンストラクタの代わりにBaseRequestOptionsコンストラクタを呼び出す必要があります。だから、あなたはどちらかでした:

は工場

providers: [{ 
    provide: RequestOptions, 
    deps: [ Config ], 
    useFactory: (config: Config) => { 
    return new DefaultRequestOptions(config); 
    } 
}] 

を使用これは角度がそれを注入しようとせずに、サービスを自分で作成することができます。それとも、

代わりRequestOptionsを拡張

@Injectable() 
class DefaultRequestOptions extends RequestOptions { 
    constructor(public config: Config) { 
    super({method: RequestMethod.Get, headers: new Headers()}) 

    this.headers.append('data', this.config.data); 
    } 
} 

RequestOptions@Injectableが飾られていませんでした。 the source code for BaseRequestOptionsを見ると、上記のことと同じことが表示されます(superコール)。

は、私はまた、あなたがAuthServiceHttpを注入された場合はこれに注意する必要がある

トークンJWTを置くためにここに私のカスタムのAuthServiceを注入する必要があります。循環依存エラーが発生する可能性があります( HttpRequestOptionsRequestOptionsHttpが必要です)。これを処理する1つの方法は、サービスに Httpの代わりに Injectorを挿入することです。次に get Http Injectorからちょうどです。

関連する問題