我收到错误:输入'订阅'不能指定类型' Observable'

时间:2018-05-02 10:18:03

标签: angular

我在服务中有两种方法。我是新手,所以我不确定订阅方法是做什么的,但我知道我不能在没有它的情况下构建我的项目。如果我评论这两个函数,然后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;。

1 个答案:

答案 0 :(得分:4)

通过调用subscribe(),您将获得Subscription个对象而不是Observable(只需调用delete / post方法即可获得)。

将返回类型更改为Subscription,或返回Observable(删除.subscribe())。

通常你应该从服务中返回observable并稍后订阅(在某些点击处理程序中甚至在模板中)。通过订阅服务,您将立即触发http调用,而返回observable是懒惰的,并且http订阅将在您订阅它时稍后触发。)