2017-03-16 12 views
1

マップ方法は、私が'rxjs/add/operator/map'インポートを追加した後も「未解決の関数やメソッドマップ()」エラーを返すを提供します。マップ機能は、未解決の関数またはメソッド(マップ)

私はすべてのステップに従って、私にも追加rxjs 5.0.1、私はまだ「未解決の関数やメソッド」エラーで出くわします。あなたはそれを修正する方法を知っていますか?

あなたは、以下のサンプルコードを見ることができます。

「マップでの未解決の関数やメソッドのエラー」を返すメソッド:

import { Component, OnInit} from '@angular/core'; 
import { Router } from '@angular/router'; 
import { FormGroup, FormBuilder } from '@angular/forms'; 
import { Http, RequestOptions, Headers, Response } from '@angular/http'; 
import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/Rx'; 

@Component({ 
moduleId: module.id, 
templateUrl: 'navigation.component.html' 

}) 

export class NavigationComponent implements OnInit { 

form: FormGroup; 

myInput = {input1:'',input2:'' } 

webserviceUrl : "https://httpbin.org/get"; 

ngOnInit(): void { } 

constructor(private router: Router) { 

} 

constructor (private http: Http) {} 


onRegister() { 
let headers = new Headers({ 'Content-Type': 'application/json' }); 
let options = new RequestOptions({ headers: headers }); 

return this.http.post(this.webserviceUrl, options) 
    .map(this.myInput) 
    .catch(this.handleError); 


} 

private handleError (error: Response | any) { 

let errMsg: string; 
if (error instanceof Response) { 
    const body = error.json() || ''; 
    const err = body.error || JSON.stringify(body); 
    errMsg = `${error.status} - ${error.statusText || ''} ${err}`; 
} else { 
    errMsg = error.message ? error.message : error.toString(); 
} 
console.error(errMsg); 
return Observable.throw(errMsg); 
} 

} 

答えて

1

私はそれは、パラメータのようなマップ機能がかかりますが、あなたがオブジェクトを渡していると信じています。このエラーは、typescriptが受け入れられ、オブジェクトとなるマップ関数を見つけることができないことがあります。

+0

残念ながら、私はこの問題を解決するためにすべてのものを試してみました。 nullパラメータ、文字列パラメータを与えても、それでも同じエラーが返されます。私はit'snotを受け入れ、それは私が欲しいものである – user2307786

0

Mapは、データを変更する機能を使用しています。

httpポストでは、http呼び出しからの戻り値を取得し、変数this.myInputに値を渡したいと思っています。代わりにこれを行う:

return this.http.post(this.webserviceUrl, options) 
    .map(this.myInput) 
    .catch(this.handleError); 

あなたは、おそらくJSONを返すようにしたいと、その後onRegister()にごsubscribe機能にthis.myInputに値を割り当てます。それは次のようになります。

onRegister() { 
    let headers = new Headers({ 'Content-Type': 'application/json' }); 
    let options = new RequestOptions({ headers: headers }); 

    return this.http.post(this.webserviceUrl, options) 
     .map(res => res.json()) 
     .catch(this.handleError); 
} 

そして、このようにそれを購読する:

this.onRegister().subscribe(data => this.myInput = data); 
+1

はいタイラーオブジェクトマップを見つけることに関連信じています。しかし、まだ「マップ」多分あなたのNPMは、インストールのようですね – user2307786

+0

未解決の関数やメソッドが壊れていると言います。私はあなたの 'node_modules'フォルダを削除し、' npm cache clean'を実行し、次に 'npm install'を再度実行してあなたの依存関係をすべてリフレッシュします。 'import 'rxjs/Rx';'あなたのコードでは冗長です。 'import 'rxjs/add/operator/map';'だけが必要です。 –

関連する問題