无法从订阅的服务获取.then方法

时间:2017-09-20 05:25:49

标签: javascript angular angular2-services angular2-observables

我正在尝试在服务中发出补丁请求后获得成功错误响应。虽然我可以在服务本身中检测到成功或错误响应,但我无法“订阅”或得到答复回复调用它的组件中的函数。

以下是我的组件中调用服务的函数

this.os.edit({
            description: this.form.value.description,
            role_info: {
                all_learning_points: learningPointsArray
            }
        }).then((data) => {
          console.log("Data is ", data);//Can't get the value over here
        }, (error) => {
          console.log("Error is: ", error);
        });

这是服务中的功能

edit(data) {
        return new Promise((resolve, reject) => {
            this.model.patch(`opportunities/${this.opportunity.value.id}`, {opportunity: data})
            .subscribe(data => {
                this.opportunity.next(data); //Getting the value here
                this.router.navigate(['opportunity', this.opportunity.value.id]);
            }, error => {
                console.log("Error is: ", error);
              alert('Something went wrong');
            });
        })
    }

不知何故,我的.then无法捕获编辑功能中承诺所引发的响应。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

使用Promises,您需要更改此行(观察者/主题样式)

this.opportunity.next(data);

进入

resolve(data)

而且你也在混合在一起。最好只使用它们