Map函数给出了未解析的函数或方法(map)

时间:2017-03-16 11:43:25

标签: angular typescript

即使我添加'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);
}

}

2 个答案:

答案 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);