在服务中使用Delete http命令

时间:2018-06-08 11:33:52

标签: angular

我想知道与删除功能相关的内容。请参阅以下代码: -

// Method in service
 delete(Id: string): Observable<any> {
        this.Url = 'http://locahost:8080/...';
        return this.http.delete(this.Url)
            .map((response:Response) => response.json())
            .catch(this.handleError);
    }

    // Method in component
    deleteFromComp(Id: string): void {
    this.subscriptions.push(this.MyService.delete(Id).subscribe(
      data => {
      },
      error => this.errorMessage = <any>error, () => { }
    ));

    this.CallServciceToGetDataFromServer(this.PageRequestModel);
  }

delete方法调用服务器端代码来删除记录,并且没有返回任何内容。

我有以下两个问题: -

  1. 如果没有回复,为什么需要订阅?它只是200个消息代码吗?
  2. 以下修改过的调用不起作用: -

    // Method in component
            deleteFromComp(Id: string): void {
            this.subscriptions.push(this.MyService.delete(Id).subscribe(
              data => {
                this.CallServciceToGetDataFromServer(this.PageRequestModel);
              },
              error => this.errorMessage = <any>error, () => { }
            ));
    
          }
    

2 个答案:

答案 0 :(得分:1)

如果您不订阅observables,则不会执行

httpClient所有HTTP requests返回observables后,您应该subscribe向他们发送

订阅可观察对象:

  

请记住,可观察者很懒惰。如果你不订阅什么都没有   将要发生。很高兴知道你订阅的时候   在obserbe中,每次调用subscribe()都会触发它自己独立的   执行给定观察者。订阅电话不是共享的   在同一个观察者的多个订阅者中。

Here is a helpful link

以下是一个示例代码段:

import { Observable } from "rxjs/Observable"
// create observable
const simpleObservable = new Observable((observer) => {
    // observable execution
    observer.next("bla bla bla")
    observer.complete()
})
// subscribe to the observable
simpleObservable.subscribe()
// dispose the observable
simpleObservable.unsubscribe()

直到你订阅,直到你致电simpleObservable.subscribe()不会执行。

<强> PS:

使用subscribe的一个主要用途,对于检查delete status很重要,例如backend如果error会引发res.status,那么您可以查看在response.success回调中使用errorerror{ "count":"number" }的状态

答案 1 :(得分:0)

deleteFromComp(Id: string): void {
        this.subscriptions.push(this.MyService.delete(Id).subscribe(
          () => {
            this.CallServciceToGetDataFromServer(this.PageRequestModel);
          },
          error => this.errorMessage = <any>error, () => { }
        ));

      }