2017-02-16 9 views
0

私のIonic2-Angular2アプリケーションのHttpクラスを拡張しようとしています。 主な問題は、Ionics2でPromiseを返す項目を(ローカル|セッション)から取得したことにあります。また、これを拡張可能にするためObservable(またはそれが原因だと思います)に変換する必要がありました私が拡張しようとしているクラスの各関数の戻り値の型を返します。(Ionic2プロジェクトで)カスタマイズするために、Angular2のHttpクラスを拡張する方法

getCustomRequest(url:string, method:string, options?: RequestOptionsArgs, body?:any):Observable<any>{ 
    let headers = new Headers({'Content-Type': 'application/json'}); 

    return Observable.fromPromise(
     this.storage.get("authToken").then(
     data => { 
      console.log('Token '+data); 
      headers.append("Authorization", 'Token '+data); 
      return this.getNewReq({method, headers, body, url}, options); 
     }, 
     error => { 
      console.log('no token!'); 
      return this.getNewReq({method, headers, body, url}, options); 
     } 
    ) 
    ); 
    } 


    private getNewReq(reqOptObject, options):Request{ 
    let reqOpt = new RequestOptions(reqOptObject); 
    if (options) { 
     reqOpt = reqOpt.merge(options); 
    } 
    return new Request(reqOpt); 
    } 

    request(url: string|Request, options?: RequestOptionsArgs): Observable<Response> { 
    return super.request(url, options); 
    } 


    post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response>{ 
    return this.getCustomRequest(url, 'POST', options, body) 
       .map(newReq => { console.log(newReq); return this.request(newReq); }); 
    } 

エラーメッセージが[改行this.getCustomRequest(URL ...]です。タイプ「観察可能>」「観察可能な」型に代入できません「観測」 を入力すると、「レスポンスの型に代入ではありません」。プロパティ 'type 'は観測可能' タイプ にありません'。

答えて

0

this.request()は、私はあなたがmerge代わりのmap

post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response>{ 
    return this.getCustomRequest(url, 'POST', options, body) 
       .merge(newReq => { console.log(newReq); return this.request(newReq); }); 
    } 
+1

を使用する必要があると思うObservableを返すので私はコンカットも正しく動作するだろうと思っています@Gunter –

+0

私はこれが唯一の方法だと言っているわけではありません。 'map'はここでは動作せず、' merge'ができます。 'concat'もうまくいくようです。 –

+0

ここでは、ページがロードされ、リクエストが1つも実行されていないときに、このエラーが表示されます。 '例外:キャッチされていません:[オブジェクトPositionError]' – Elisa

関連する問題