繁体   English   中英

如何从angular2的http服务返回可观察的对象

[英]How to return an observable from a http service in angular2

不幸的是,当我在服务上存储许多结果时,我现在陷入了许多{{myservice.somevalue}} (和myservice.someother )等问题,并散布在其他组件上的情况。

我相信从服务返回到组件会更好。

这是我在该服务上拥有的代码:

getIssue(issueName: string) {
    return this.http.post(this.URL + 'issue/all', JSON.stringify({'issueName': issueName}))
                    .subscribe(data => this.somevalue = data.json(),
                                err => console.log(err));
}

因此,在其他几个组件上,我调用了诸如this.myservice.getIssue(issueName)类的函数。

在HTML中,我更喜欢使用{{somevalue}}

如何从http服务返回可观察到的http?

class SomeService {
  someValue = new BehaviorSubject();

  getIssue(issueName: string) {
      return this.http.post(this.URL + 'issue/all', JSON.stringify({'issueName': issueName}))
                      .subscribe(data => this.somevalue.next(data.json()),
                                  err => console.log(err));
  }
}

在你的组件中

class MyComponent {
  constructor(someService:SomeService) {
    someService.someValue.subscribe(val => {
      this.someValue = val;
    });
  }
}

有关替代方法,另请参见https://stackoverflow.com/a/36291681/217408

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM