在Angular4中的不同层中链接可观察

时间:2017-12-03 00:28:40

标签: angular

如果我想将结果从一个层传递到另一个层,如何在Angular4中链接可观察函数。

第一层是使用Get方法的数据服务 第二层是不同的服务,我调用数据服务获取方法并订阅它以获得结果。

现在我想在我的组件中订阅第二层服务,那么如何通过第二层服务将值从数据服务传递到组件?

重点是,我不想从组件中的数据服务获得直接代码。

enter image description here

我想在组件中订阅GetProfile,但是如何在订阅之后正确返回值,也就是在DataService GetOne函数的值之后?

2 个答案:

答案 0 :(得分:0)

您可以使用do()。

public getProfile = () : Observable<any> {
    this.dataService.setEndPoint('api/account/getprofile');
    return this.dataService.GetOne()
        .map(response => response.json())
        .do( response => {
            ......
        }, error => {
            ......
        });
}

答案 1 :(得分:0)

哈,我最后还是告诉我们应该在一开始就做些什么,不知道我在开始时想到的是什么。这是我最后订阅的第二层:

public GetProfile = (): Observable<any> => {
    this.dataService.SetEndpoint('api/account/getprofile');
    return this.dataService.GetOne();
}

组件:

getProfile(): void{
    this.accountService
        .GetProfile()
        .subscribe(data => {
            this._updateProfileModel = data;

            this._form.setValue({
                firstName: this._updateProfileModel.firstName,
                lastName: this._updateProfileModel.lastName,
                phoneNumber: this._updateProfileModel.phoneNumber
              });
        }, (error) => {
            console.log(error);
        });
}