2016-05-31 6 views
2

カスタムベーシッククエスチョンクラスのコンストラクタを注入することはベータ17でうまくいきましたが、RC1に移行した後はこれ以上動作しないようです。Angular2 RC BaseRequestOptionコンストラクタインジェクション

https://embed.plnkr.co/usOljRDLap9RlLd3RIBd/

任意のアイデア:

私はwebapibaseurlは今(17個の参照が働いていた同じコードアプローチが、ベータ版で)として未定義伝わってくることを示すためにplunkrを作成していますか?

答えて

0

これはまだ私のために働く。ここで私が使用したカスタムオプションのクラスは次のとおりです。

import {BaseRequestOptions, RequestOptions, RequestOptionsArgs} from '@angular/http'; 

export class AppRequestOptions extends BaseRequestOptions { 
    constructor() { 
    } 

    merge(options?:RequestOptionsArgs):RequestOptions { 
    options.url = 'https://www.test.org' + options.url; 
    return super.merge(options); 
    } 
} 

、私はそれをこのように登録します。

bootstrap(App, [ 
    HTTP_PROVIDERS, 
    provide(RequestOptions, {useClass: AppRequestOptions}) 
]); 

このplunkr参照:https://plnkr.co/edit/MK30JR2qK8aJIGwNqMZ5?p=previewを。

編集

このようなクラスの依存性注入のレベルに問題があるようです。私は問題を開いた:https://github.com/angular/angular/issues/8925RequestOptionsからではなくBaseRequestOptionsから延び

+1

私に戻ってくれてありがとう。オプションクラス自体は問題なく機能しますが、私にとって重要なことは、 'undefined'として渡される 'webApiBaseUrl'(またはそれ以外のもの)を注入しようとしていることです。 – Monkeeman69

+0

@ Monkeeman69 Wouah、あなたは完全に正しいです。 Dependency Injectionは 'BaseRequestOptions'を拡張したクラスではうまくいかないようですが...(webApiBaseUrl'の)注入が他の場所で可能ですが。私はそれがバグ/回帰だと思う。私はこれのためにバグをオープンします。 –

+0

私が開設した問題は次のとおりです:https://github.com/angular/angular/issues/8925。 –

4

はそれが@Inject('webApiBaseUrl') private webApiBaseUrl:string動作しませんでしたを注入するいくつかの未知の理由でそれ以外の場合は私のため

@Injectable() 
export class AppRequestOptions extends RequestOptions { 
    constructor(@Inject('webApiBaseUrl') private webApiBaseUrl:string) { 
    super({method: RequestMethod.Get, headers: new Headers()}); 
    console.log('webApiBaseUrl', webApiBaseUrl); 
    } 

    merge(options?:RequestOptionsArgs):RequestOptions { 
    options.url = this.webApiBaseUrl + options.url; 
    console.log('merge - options.url = '+options.url); 
    return super.merge(options); 
    } 
} 

を働かせました。

Plunker example

関連する問題