2017-04-17 15 views
0

私はhttpリクエストを作成してマップを実行しようとしています。map2:引数タイプがパラメータと一致しません

私は角度のドキュメントを続いたが、何らかの理由で私はマップ機能上のエラーを取得しています:「引数の型がパラメータと一致しません」。私は'rxjs/add/operator/map';を輸入しています。

npm installにする必要がありますか?

import { Injectable } from '@angular/core'; 
    import { Http, Response } from '@angular/http'; 
    import {Observable} from "rxjs/Observable"; 
    import 'rxjs/add/operator/catch'; 
    import 'rxjs/add/operator/map'; 

    @Injectable() 
    export class ApiService { 

     constructor(private http: Http) { 
     } 

     public getValue() : Observable<any> { 

     return this.http.get('') 
         .map(this.extractData) 
         .catch((error:any) => Observable.throw(error.json().error || 'Server error')); 

     } 

     private extractData(res: Response) { 
     let body = res.json(); 
     return body.data || { }; 
     } 
    } 

UPDATE:何らかの理由で

:私はここにAngular 4.0.2rxjs 5.0.1WebStorm 2016.1.3を使用してい

は私のコードです.map().map(this.extractData)への変更は、問題を解決しました。ここ はmap.d.ts定義です:

import { map } from '../../operator/map'; 
declare module '../../Observable' { 
    interface Observable<T> { 
     map: typeof map; 
    } 
} 

誰かが理由を説明することができれば、私は幸せになります。

UPDATE 2:

.map()なし.map(this.extractData)に戻すプロジェクトを実行しているときに動作するようです!おそらく、Webstorm IDEによって生成されるエラーです。

+0

あなたの解決策は悪い考えです... Typescriptコンパイラのエラーは一般的には、混合について明示されていないことを混ぜているかもしれないという警告です。あなたのエラーは元の 'map'関数で確実ですか? 'map'を削除すると、エラーは消えますか?またはextractData関数を一時的に変更してパラメータとして 'any'を受け入れるなら、Typescriptエラーは消えますか? – snorkpete

+0

@snorkpete map()を削除するとエラーが発生します。さらに、「res:Response」の代わりに「res:any」を受け入れるように抽出データを変更すると、同じエラーが発生します – ohadinho

+0

'map'を削除すると、同じ(元の)エラーか別のエラーが発生していますか? – snorkpete

答えて

0

mapステートメントでエラーが発生していますか?

IMOこのライン:

return this.http.get('') 

が原因で不足しているURL('')のエラーをスローしますと、これは代わりに呼び出されます。

.catch((error:any) => Observable.throw(error.json().error || 'Server error')); 

これが問題である場合は、チェックObservable.throwの署名では、最初のパラメータとして例外が予想されます。私はそれがあるべきだと思う:

.catch((error:any) => Observable.throw(new Error(error.json().error || 'Server error'))); 

私は、これはあなたがextractDataに任意の入力パラメータを供給されていません

+0

デザイン時にエラーが発生しました..コンパイルエラーが発生しました。 – ohadinho

0

に役立ちます願っています。その行に沿って.map((data) => this.extractData(data))か何かに変更してください。

+0

変更後も同じエラーが発生しています – ohadinho

+0

resを変更:resへの応答:extractDataのanyが役立つかどうか確認してください。 – unitario

+0

は依然として役に立ちません。 – ohadinho

関連する問題