2017-03-16 4 views
1

Die Kartenmethode gibt den Fehler "Ungelöste Funktion oder Methodenabbildung()" zurück, auch nachdem ich 'rxjs/add/operator/map' importiert habe.Kartenfunktion liefert ungelöste Funktion oder Methode (Karte)

Ich folgte jedem Schritt, fügte ich sogar rxjs 5.0.1, ich stolpern immer noch mit "Ungelöste Funktion oder Methode" Fehler. Kennen Sie einen Weg, wie Sie es beheben können?

Sie können den folgenden Beispielcode sehen.

Methode, die „Ungelöste Funktion oder Methode Fehler bei Karte“ zurückgibt:

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); 
} 

} 

Antwort

1

Ich glaube Karte eine Funktion übernimmt, wie es Parameter ist, aber Sie ein Objekt übergeben. Dieser Fehler könnte ein Typoskript sein, das keine Kartenfunktion findet, die akzeptiert und ein Objekt ist.

+0

leider habe ich alles versucht, dieses Problem zu beheben. Selbst wenn ich Nullparameter, String-Parameter gebe, gibt es immer noch denselben Fehler. Ich glaube, es ist nicht im Zusammenhang mit einer Karte, die akzeptiert und Objekt – user2307786

0

Map verwendet eine Funktion zum Ändern der Daten.

In Ihrem http-Post vermute ich, dass Sie die Rückgabewerte vom http-Aufruf erhalten möchten, und geben Sie die Werte an Ihre Variable this.myInput. Statt dies zu tun:

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

Sie wollen wahrscheinlich die json und dann in Ihrer subscribe Funktion onRegister() zuweisen, die Werte zu this.myInput zurückzukehren. Es würde wie folgt aussehen:

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); 
} 

Und dann, um es wie diese abonnieren:

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

Ja Tyler ist es, was ich will. Aber immer noch "Karte" sagt ungelöste Funktion oder Methode – user2307786

+0

Es klingt wie vielleicht Ihre npm Installation ist beschädigt. Ich würde Ihren 'node_modules'-Ordner löschen,' npm cache clean' ausführen, dann wieder 'npm install', um alle Ihre Abhängigkeiten zu aktualisieren. Der 'Import 'rxjs/Rx';' in Ihrem Code redundant. Sie brauchen nur das 'import 'rxjs/add/operator/map';'. –