首页 > 解决方案 > 如何在 Angular 的 post/delete/put- 请求中添加我自己的函数?

问题描述

可以在 Angular 的 post/put/delete 请求中添加我自己的功能吗?喜欢:

  openAlert() {
    this.dialog.open(AlertComponent, {
      width: '30%',
      position: {top: '0%', right: '15%'}
    })
  }
  addStudent(borrow: Borrow): Observable<Borrow> {
    return this.httpClient.post(`${this.student_Url}`, stdent, this.httpOptions).pipe(
      tap((newStudent: Student) => this.log(`added student w/ ${newStundent}`)),
      map(() => { return student; }),
      catchError(err => {
        alert(err.error.message);
        console.error(err.message);
        console.log("Error deteced");
        return of(err.message);
      })
    )
  }

所以我会在帖子之后添加功能 openAlert 。我可以把它放在第一次返回之前,但它没用,因为我想在 addStudent 函数没有出现任何错误(catchError)时显示对话框,但如果我把它放在开头,我也会在这种情况下看到对话框字段我得到一个错误。因此,如果帖子也失败了,我会得到对话框字段,但我想阻止它。任何想法?

标签: angulartypescriptpost

解决方案


有以下三种方法:

  1. 使用tap()

    tap((newStudent: Student) => this.openAlert()),

  2. 在一个subscribe()块中:

    return this.httpClient.post(${this.student_Url}, stdent, this.httpOptions).subscribe(data => this.openAlert())

  3. 使用可观察的:

    this.addStudent.subscribe(data => this.openAlert())


推荐阅读