当我使用来自两个不同组件的以下代码段时,我从订阅者那里获得了有效的响应值。
dataService.ts
insertappFormData(){
return this.http.get('http://localhost:48116/RecuruitmentService.asmx/addRoleTest?i=3').map(this.extractData);
}
private extractData(res: Response) {
return res.text() ? res.json() : {};
}
app.component.ts
this.dataService.insertappFormData().subscribe((response) => console.log(response));
控制台输出
当我尝试将变量分配给响应值时,我收到“未定义”错误。
myvar:any;
this.dataService.insertappFormData().subscribe(response => this.myvar = response);
console.log(this.myvar);
我已经完成了以下讨论。 Solution-1, Solution-2
但我无法解决。 如何解决这个问题呢?
答案 0 :(得分:1)
insertappFormData()
返回一个异步的可观察对象。它在您调用订阅后执行,您应该在subscribe()
内打印出来:
this.dataService.insertappFormData()
.subscribe(response => {
this.myvar = response;
console.log(this.myvar);
});
答案 1 :(得分:1)
因为您的console.log(this.myvar);
不在订阅中。
改为:
this.dataService.insertappFormData().subscribe(response => {
this.myvar = response;
console.log(this.myvar);
});
注意: subscribe是异步功能。