2016-08-30 5 views
0

これを理解できないようです。私は組み込みの角度Httpクラスを拡張するカスタムクラスを持っています。Angular2 Httpはサービスを挿入しません

import { Injectable } from '@angular/core'; 
import { 
    Http, 
    ConnectionBackend, 
    RequestOptions, 
    RequestOptionsArgs, 
    Request, 
    Response 
} from '@angular/http'; 
import { Observable } from 'rxjs/Observable'; 
import { OAuth } from './oauth.service'; 

@Injectable() 
export class HttpService extends Http { 
    constructor(connectionBackend: ConnectionBackend, defaultOptions: RequestOptions, private $oauth: OAuth) { 
     super(connectionBackend, defaultOptions); 
     debugger; 
    }  
} 

私はHttpServiceを別のクラスに注入します。

import { HttpService } from './http.service'; 
import { Injectable } from '@angular/core'; 


@Injectable() 
export class KateService { 
    constructor(private $http: HttpService) { 

    } 
} 

しかし、私は私のHttpServiceに設定されているデバッガの声明で、私のprivate $oauth: OAuthはnullです。呼び出しスタックを見ると、呼び出しメソッドは自分のOAuthサービス(ちょうど2つ(connectionBackendとdefaultOptions))を注入しません。

私はそれが内蔵の角度Httpサービスのような私のカスタムHttpサービスを扱っていると感じます。しかし、私はそう...

答えて

1

あなたはHTTP_PROVIDERS(輸入HttpModuleを)、OAuth、およびHttpService

@NgModule({ 
    imports: [HttpModule] 
    providers: [OAuth, HttpService], 
    ... 
}) 
+0

を提供する必要がAngular2にかなり新たなんだ私は、これはionic2アプリケーションであることを言及する必要があります。私はionic2アプリ(単なるルートコンポーネント)のNgModuleにアクセスできないので、コンポーネントプロバイダーはこのプロバイダのように見えますが[OAuth、HttpService、HTTP_PROVIDERS]ですが、まだnullです – Matt

+2

これは同等です。なぜそれがうまくいかないのか分かりません。 DIと他のクラスを拡張するクラスに問題がありました。彼らが修正されているかわかりません。回避策として、拡張する代わりに 'Http'を埋め込むことができます。クラスの 'get'、' post'、...メソッドを繰り返して、 'this.http'に転送する必要があります。他のクラスを拡張することに関連しているかどうかを調べるには、 'extends Http'と' super(...) 'を削除して、すべてのパラメータがこのように注入されているかどうか確認してください。 –

+1

これは機能します。拡張する代わりに、私は自分のHttpとOAuthサービスの両方を注入し、両方とも期待どおりに動作します。彼らにはうまくいかないバグがあります。あるいは、私のプロバイダが正しくセットアップされていないかもしれません。いずれにしても、私は引き続き進むことができます。ありがとう – Matt

関連する問題