angular - 如何在 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)时显示对话框,但如果我把它放在开头,我也会在这种情况下看到对话框字段我得到一个错误。因此,如果帖子也失败了,我会得到对话框字段,但我想阻止它。任何想法?
解决方案
有以下三种方法:
使用
tap()
:tap((newStudent: Student) => this.openAlert()),
在一个
subscribe()
块中:return this.httpClient.post(${this.student_Url}, stdent, this.httpOptions).subscribe(data => this.openAlert())
使用可观察的:
this.addStudent.subscribe(data => this.openAlert())
推荐阅读
- css - 如何使用 SASS 扩展/自定义引导类的后代?
- dataframe - Pyspark Dataframe 通过消除空值来合并行
- postgresql - 如何使用 ISO 8859-1 字符集在 Postgreql 中创建数据库?
- ansible - 在 ansible 2.13 中弃用 hash_behavior 合并
- javascript - 将日期转换为字符串时如何获取准确时间
- python - import modulename 的使用与导入模块的命名空间有什么关系?
- c - 此类变量的声明“int (*pfds)[2];” 他们叫什么
- google-apps-script - 如何将嵌套的 JSON 数据写入 Google 表格
- php - 计算需要时间来完成,但我想让它在后台处理并且用户可以访问另一个页面?
- java - 在 Little Endian CPU 架构上运行时,Java 如何处理 Endianess?