在Angular中显示订阅响应值

时间:2018-03-27 12:38:54

标签: javascript json angular web-services typescript

当我使用来自两个不同组件的以下代码段时,我从订阅者那里获得了有效的响应值。

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

控制台输出

console out put

当我尝试将变量分配给响应值时,我收到“未定义”错误。

myvar:any;
this.dataService.insertappFormData().subscribe(response => this.myvar =  response);
console.log(this.myvar);

我已经完成了以下讨论。 Solution-1Solution-2

但我无法解决。 如何解决这个问题呢?

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是异步功能。