【发布时间】:2020-03-01 13:49:57
【问题描述】:
我有具有任意可观察参数的函数,它正在做一些工作。 我想订阅一个有其他订阅的主题(为了让所有被调用的函数触发)。
我找不到正确的方法。
我的服务:
//The method of the observable
addProduct2(product: Product) {
delete product.id;
const url = 'http://localhost:8080/createProduct';
return this.http.post<Product>(url, product);
}
我希望这会起作用:
getProductsEvent:Subject<Product> = new Subject();
constructor(private http: HttpClient, private currentRoute: ActivatedRoute) {
//....
this.addProduct2.subscribe(this.getProductsEvent);
}
我得到这个编译错误:
错误 src/app/components/products-feature/data-service.service.ts(42,22): 错误 TS2339:类型“(产品: 产品)=> 可观察的'。
在日志中:
AppComponent.html:3 ERROR TypeError: this.addProduct2.subscribe 不是 一个函数 在新的 DataServiceService (data-service.service.ts:42)...
我怎样才能正确地实现它?我缺少什么?
记住我不能调用
this.addProduct2().subscribe...;
因为它有一个参数,我不知道它会得到什么参数。
【问题讨论】:
-
不清楚你想在这里实现什么。是否要在返回 http 响应时在
getProductsEvent中发出值? -
是的,实际上 getProductsEvent 是我用来在某些组件之间传递数据的常见主题。我想将它插入这个 addProduct 操作,因为它会再次执行订阅者(并在发布后刷新数据)。 @KurtHamilton
-
我建议您努力提高问题的质量。人们对您投反对票并投票结束。我知道不是每个人都能说流利的英语,但你可以从正确格式化你的代码开始。如果人们看到您在问题上付出了认真的努力,他们会更愿意提供帮助。另请阅读:stackoverflow.com/help/how-to-ask。我为你改进了格式。
标签: angular typescript rxjs observable subject