angular - 如何在 Angular 7 中将服务函数作为可观察值返回?

标签 angular observable angular7 angular-observable

我有这个service.ts代码:

export class BasicOperationService {

  constructor() { }

  delete(service: any, object: any, data: any): Observable<any> {
    const id = this.getId(object);
    let index: number;

    for (let i = 0; i < data.length; i++) {
      if ( data[i].id === id) {
        index = i;
        break;
      }
    }

    return service.delete(id).subscribe(result => {
        data.splice(index, 1);
        return data;
      }, error => {
        console.log(error);
        return data;
      });
  }
}

我有这个组件.ts:

delete(object: any, id: number) {
  this.loadingId = id;

  this.basicOperation.delete(this.photoalbumService, object, this.content.data)
    .subscribe(result => {
      this.content.data = result;
      this.loadingId = 0;
    });
}

现在我收到此错误消息:

TypeError: this.basicOperation.delete(...).subscribe is not a function

如何从 BasicOperationService 的 delete() 方法作为可观察对象返回?

最佳答案

也许我误会了,但你也许应该

return service.delete(id);

并且不订阅。

然后,仅在使用该服务的组件中进行订阅。

关于angular - 如何在 Angular 7 中将服务函数作为可观察值返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54047115/

相关文章:

javascript - Angular/AngularFire2 Firestore - 初始化可观察集合

angular - NgIf 不使用 observable

angular - 防止 Observable 再次运行直到完成

Angular 7 - ControlValueAccessor - 修剪绑定(bind)到表单的输入值

css - Angular: Bootstrap 无法触发选择选项,因为选项是使用 ngFor 动态绑定(bind)的

angular - 如何在 Angular 项目中设置 mapboxgl.accessToken?

Angular 5 以编程方式提交表单不发送正确的值

html - 如何使用 html 中的异步管道获取可观察值的嵌套值

javascript - 如何解决错误:接近堆限制的无效标记压缩分配失败-应用程序中的JavaScript堆内存不足

arrays - 在 Angular 上执行 GET 请求时出现此错误 : Cannot find a differ supporting object '[object Object]