即使我添加'rxjs/add/operator/map'
导入后,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);
}
}
答案 0 :(得分:1)
我相信map会将一个函数作为参数,但是您传递的是一个对象。这个错误可能是打字稿无法找到接受和反对的地图函数。
答案 1 :(得分:0)
Map
使用函数修改数据。
在你的http帖子中,我怀疑你想要从http调用中获取返回值并将值赋给变量this.myInput
。而不是这样做:
return this.http.post(this.webserviceUrl, options)
.map(this.myInput)
.catch(this.handleError);
您可能想要返回json,然后在subscribe
函数中将onRegister()
的值分配给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);