0
を動作しません、私はrxjsを使用して、タイムアウトセッターを追加するHttp
クラスを拡張する場合、timeout
オペレータは動作しません。私はこのimport 'rxjs/add/operator/timeout'
Angular2タイムアウトオペレータは、拡張のHttp上
のようにそれをインポートするとき、私はロードする場合にのみ動作します
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")
});
}
}
を追加することによって固定されています。タイトル。 –
@GünterZöchbauerそれはplnkrのコメント付きコードで動作しますが、拡張httpで使用したときにエラー –
が発生し、 'http.get()'でタイムアウトを使用すると(カスタム 'WpHttp' )? –