我在Angular项目上工作,我尝试调试这段代码:
@Injectable()
export class TestService {
private testsListUrl = "/api/test/list"; // [{testName: 'test1', testStatus: 'OK'}, {testName: 'test2', testStatus: 'OK'}]
constructor(private _http: Http) {
}
public getTests(): Observable<Test[]> {
return this._http.get(this.testsListUrl).map(this.mapTests);
}
private mapTests(response:Response): Test[]{
return response.json().map(this.mapTest);
}
private mapTest(response:Test): Test{
return {
name: response.testName,
status: response.testStatus
};
}
}
getTests()
函数似乎有效,我得到了[{testName: 'test1', testStatus: 'OK'}, {testName: 'test2', testStatus: 'OK'}]
的HTTP回答。
然后,我将Response
映射到Test
与mapTests()
的数组。
然后,我将json数组的每个元素映射到Test
mapTest()
。
但是这段代码不起作用。当我记录函数调用时,我输入mapTests
但不是mapTest
。
我通过在mapTest()
中内联我的mapTests()
电话来解决我的问题:
private mapTests(response:Response): Test[]{
return response.json().map(response => ({
name: response.testName,
status: response.testStatus
}));
}
但我不明白发生了什么......为什么我需要在mapTest()
中内联 mapTests()
而不是{{1}在mapTests()
?