我在服务中有两种方法。我是新手,所以我不确定订阅方法是做什么的,但我知道我不能在没有它的情况下构建我的项目。如果我评论这两个函数,然后ng服务,然后取消注释,并让它刷新更改,它的工作原理。但我无法建立项目。如何更改代码,以便我没有得到这些错误并成功构建项目?
public delete(patient: Patient): Observable<Patient> {
return this.http.delete<Patient>(`${this.deleteOneUrl}/${patient.id}`).subscribe();
}
public addPatient(patient: Patient): Observable<Patient> {
return this.http.post<Patient>(this.addOneUrl, patient).subscribe();
}
src / app / patient.service.ts(30,3)中的错误:错误TS2322:键入&#39;订阅&#39;不能分配给&#39; Observable&#39;。 物业&#39; _isScalar&#39;在订阅&#39;类型中缺少。 src / app / patient.service.ts(38,5):错误TS2322:输入&#39;订阅&#39;不能分配给&#39; Observable&#39;。
答案 0 :(得分:4)
通过调用subscribe()
,您将获得Subscription
个对象而不是Observable
(只需调用delete
/ post
方法即可获得)。
将返回类型更改为Subscription
,或返回Observable
(删除.subscribe()
)。
通常你应该从服务中返回observable并稍后订阅(在某些点击处理程序中甚至在模板中)。通过订阅服务,您将立即触发http调用,而返回observable是懒惰的,并且http订阅将在您订阅它时稍后触发。)