-2

我的http服务中有这个方法:

update(field: Field) {
    return this.http.put<Field>(`${environment.apiUrl}/fields`, field).pipe(
        map((response: any) => {
            this.toastr.success(response.message);
            return response.model;
        }),
    );
}

似乎为了从组件调用它,我必须像这样订阅它:

this.fieldService.update(currentField).subscribe(field => console.log(field));

如果我可以这样调用它,我会更喜欢它:

this.fieldService.update(currentField);

作为奖励,我希望能够两者兼得。这可能吗?

4

2 回答 2

2

如果我可以这样调用它,我会更喜欢它:

this.fieldService.update(currentField);

然后从服务中调用 subscribe()。但这是一个糟糕的想法,因为您通常希望能够知道更新是否成功,以及何时成功,以便链接其他一些操作,例如导航到显示您刚刚的值的页面更新。

作为奖励,我希望能够两者兼得。这可能吗?

不,除非您定义了两种不同的方法,或者除非您将 sme 参数传递给该方法,告诉它是否订阅。

于 2019-10-23T18:37:34.143 回答
-1

实际上,我假设您正在尝试为 REST 请求实现通用烤面包机。如果是这样,你可能会更乐意改变做事的方式。

个人会为此实现一项服务,您可以随时随地调用该服务,当然要尊重您的应用程序的模块层次结构。

于 2019-10-23T19:13:51.143 回答