我的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);
作为奖励,我希望两者都能。这可能吗?
如果我能像这样调用它,我会更喜欢它:
this.fieldService.update(currentField);
然后从服务中调用subscribe((。但这是一个糟糕的想法,因为您通常希望能够知道更新是否成功,以及何时成功,以便链接其他操作,例如导航到显示刚刚更新的值的页面。
作为奖励,我希望两者都能。这可能吗?
否,除非您定义了两个不同的方法,或者除非您将sme参数传递给方法,告诉它是否订阅。
实际上,我假设您正在尝试为REST请求实现一个通用的toast。如果是这样的话,你可能会更乐意改变做这件事的方式
我个人将为此实现一项服务,您可以随时随地调用该服务,当然,要尊重应用程序的模块特性。