在这里,我有两种服务方法。我对此并不陌生,所以不确定是否可以使用订阅方法,但是我知道如果没有它,我将无法构建我的项目。如果我评论这两个功能,则先提供服务,然后取消评论,然后让其刷新更改,即可正常工作。但是我不能建立项目。如何更改代码,这样就不会出现那些错误并成功构建项目?
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();
}
Run Code Online (Sandbox Code Playgroud)
src / app / patient.service.ts(30,3)中的错误:错误TS2322:类型“ Subscription”不能分配给类型“ Observable”。“预订”类型中缺少属性“ _isScalar”。src / app / Patient.service.ts(38,5):错误TS2322:类型“ Subscription”不能分配给类型“ Observable”。
通过调用subscribe(),您得到的是Subscription对象而不是Observable(仅通过调用delete/ post方法获得的)。
将返回类型更改为Subscription,或返回Observable(删除.subscribe())。
通常,您应该从服务中返回可观察的对象,并稍后再订阅(在某些点击处理程序中,甚至在模板中)。通过订阅该服务,您将立即触发http调用,而返回的observable是惰性的,并且稍后在您订阅它时将触发http调用)。