2016-10-13 11 views
0

を動作しません、私はrxjsを使用して、タイムアウトセッターを追加するHttpクラスを拡張する場合、timeoutオペレータは動作しません。私はこのimport 'rxjs/add/operator/timeout'Angular2タイムアウトオペレータは、拡張のHttp上

のようにそれをインポートするとき、私はロードする場合にのみ動作します

live plnkr

import {Component, NgModule} from '@angular/core' 
import {BrowserModule} from '@angular/platform-browser' 
import {Observable} from 'rxjs/Observable' 
import 'rxjs/add/operator/timeout' 
import {HttpModule, RequestOptions, XHRBackend} from "@angular/http"; 

import {WpHttp} from "../wpHttp"; 

@Component({ 
    selector: 'my-app', 
    template: ` 
    <div> 
     <h2>Hello {{name}}</h2> 
    </div> 
    `, 
}) 
export class App { 
    name:string; 
    constructor(private wpHttp: WpHttp) { 
    //this.name = 'Angular2' 
    } 

    ngOnInit(){ 
    this.wpHttp.get("../test.json").subscribe((res)=>{ 
     this.name = res.title; 
    }); 
    } 
} 

@NgModule({ 
    imports: [ BrowserModule, HttpModule ], 
    declarations: [ App ], 
    providers: [ 
    { 
     provide: WpHttp, 
     useFactory: (backend: XHRBackend, defaultOptions: RequestOptions) => 
     new WpHttp(backend, defaultOptions), 
     deps: [XHRBackend, RequestOptions] 

    } 
    ], 
    bootstrap: [ App ] 
}) 
export class AppModule {} 

ライブラリ全体rxjs拡張のHttp

import {Injectable} from '@angular/core'; 
import {Http, RequestOptions, RequestOptionsArgs, ConnectionBackend} from '@angular/http'; 

import {Observable} from 'rxjs/Observable'; 


@Injectable() 
export class WpHttp extends Http { 

    constructor(backend: ConnectionBackend, 
       defaultOptions: RequestOptions) { 
    super(backend, defaultOptions); 
    } 


    get(url): Observable<any> { 

    console.log("started") 
    return super.get(url) 

     .timeout("500", new Error('delay exceeded')) 
     .catch((err) => { 
     return Observable.throw(err); 
     }) 
     .finally(() => { 
     console.log("finished") 
     }); 
    } 


} 
+0

を追加することによって固定されています。タイトル。 –

+0

@GünterZöchbauerそれはplnkrのコメント付きコードで動作しますが、拡張httpで使用したときにエラー –

+0

が発生し、 'http.get()'でタイムアウトを使用すると(カスタム 'WpHttp' )? –

答えて

2

問題がで述べたように、 `タイムアウト()` `Http`を拡張するクラスで使用されているという事実に関係しているようには見えません、すべての使用事業者は

import 'rxjs/add/operator/timeout'; 
import 'rxjs/add/operator/catch'; 
import 'rxjs/add/operator/finally'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/observable/throw'; 
import {Observable} from 'rxjs/Observable'; 
関連する問題