Angular2 http可观察

时间:2017-03-02 18:43:05

标签: angular

我有以下方法调用http observable

<input type="text">
<input type="text">
<input type="text">

这个代码在一个调用它的组件中

console.log($('input').length);

问题是,组件中的代码在服务方法之前返回。所以console.log(this.message)是未定义的。我猜它一定是时间问题?

2 个答案:

答案 0 :(得分:1)

是的,这是时间问题。 {http:1}}语句在响应从您的http请求到达之前执行。你应该在subscribe中写下日志语句,如下所示。

let response = this.workRequestService.SaveWorkRequest(this.workRequest)
    .subscribe(
        hero => 
        {
           this.message = hero;
           console.log(this.message);
        },
        error => this.errorMessage = <any>error);

答案 1 :(得分:0)

试试这个:

ngOnInit() {
     this.getMessage().subscribe(_ => {
       console.log(this.message)
   });
}

public getMessage() {
  return this.workRequestService.SaveWorkRequest(this.workRequest)
    .map(hero => this.message = hero,error => this.errorMessage = <any>error);