如果我想将结果从一个层传递到另一个层,如何在Angular4中链接可观察函数。
第一层是使用Get方法的数据服务 第二层是不同的服务,我调用数据服务获取方法并订阅它以获得结果。
现在我想在我的组件中订阅第二层服务,那么如何通过第二层服务将值从数据服务传递到组件?
重点是,我不想从组件中的数据服务获得直接代码。
我想在组件中订阅GetProfile,但是如何在订阅之后正确返回值,也就是在DataService GetOne函数的值之后?
答案 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);
});
}