【发布时间】:2017-03-28 13:47:38
【问题描述】:
我有一个返回 void 的 web api 删除方法
在 Angular 2 中,如果我不订阅 Observable,web api 方法将永远不会被调用。 Question 和 Cold vs Hot observables。由于需要返回一个 observable 并订阅,我试图返回一个 Observable 为:
服务.ts
public deleteProduct = (product: ProductApi): Observable<boolean> | boolean => {
this._http.delete(this.actionUrl + product.productId)
.catch((error:boolean) => Observable.throw(false));
return true;
}
组件.ts
deleteProduct(product: ProductApi, event: any): void {
event.stopPropagation();
this.productApiService
.deleteProduct(product)
.subscribe((boolean) => {
this.products = this.products.filter(p => p !== product);
if (this.selectedProduct === product) { this.selectedProduct = null; }},
error => console.log(error),
() => {
console.log('ProductApiService:Delete completed');
});
}
controller.cs
// DELETE api/product/5
[HttpDelete("{id}")]
public void Delete(int id)
{
_productService.DeleteProduct(id);
}
或者有办法返回 Observable?或者如果上述方法是正确的,我该如何解决以下错误?
- 构建:参数“布尔”隐含具有“任意”类型
- 构建:参数“错误”隐含具有“任何”类型
- 构建:“boolean |”类型上不存在属性“subscribe”可观察的'
【问题讨论】:
标签: angular asp.net-core asp.net-web-api2