angularjs – 来自map函数的Angular2 RxJS调用类函数
发布时间:2020-12-17 08:51:02 所属栏目:安全 来源:网络整理
导读:我是Angular 2和Observables的新手,所以如果我的问题很简单,我会道歉.无论如何,我正在尝试使用RxJS测试Angular 2 HTTP客户端.虽然我让它工作,但我需要为我正在处理的服务添加更多逻辑.基本上我想要一个映射函数将我从我连接的Web服务接收的对象转换为我在Ang
我是Angular 2和Observables的新手,所以如果我的问题很简单,我会道歉.无论如何,我正在尝试使用RxJS测试Angular 2 HTTP客户端.虽然我让它工作,但我需要为我正在处理的服务添加更多逻辑.基本上我想要一个映射函数将我从我连接的Web服务接收的对象转换为我在Angular中的模型对象.
这是有效的代码: import { Injectable } from 'angular2/core'; import { Http,Response } from 'angular2/http'; import { Observable } from 'rxjs/Observable'; import { Person } from '../models/person'; @Injectable() export class PersonsService { constructor(private http: Http) { } private personsUrl = 'http://localhost/api/persons'; getPersons(): Observable<Person[]> { return this.http.get(this.personsUrl) .map(this.extractData) .catch(this.handleError); } private extractData(res: Response) { if(res.status < 200 || res.status >= 300) { throw new Error('Bad response status ' + res.status); } let body = res.json(); return body.data || {}; } private handleError(error: any) { let errMsg = error.message; return Observable.throw(errMsg); } } 使用上面的代码我没有任何问题.我遇到的问题是,我想将我从服务中获得的对象映射到我在Angular中的对象,即Person.我尝试的是从.map函数使用的extractData函数中调用另一个函数. private extractData(res: Response) { if(res.status < 200 || res.status >= 300) { throw new Error('Bad response status ' + res.status); } let body = res.json(); // map data function var data = this.mapData(body.data); return data || {}; } private mapData(data: any) { // code to map data } 显然上面的代码不起作用,因为在extractData函数中引用它时,这不是指PersonsService类,而是引用MapSubscriber对象. 我不知道是否可以调用“外部”功能.这可能是一个愚蠢的事情,但我找不到任何有关此事的信息.
而不是仅仅传递函数引用使用
arrow 函数来保留它
.map((res) => this.extractData(res)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |