angular - 提交具有条件的两个不同 Api 的表单

标签 angular typescript

我遇到了如何使用 2 个不同的 Api 提交的问题。 当第一个 Api 返回成功时,然后转到第二个 Api。 第一个 Api 成功,但第二个 Api 失败,因为数据未定义。

这是我的代码

public signupform(userData: SignupRequest): Observable <any> {
  return this.http.post('api/createorganisation').pipe(tap( // Log the result or error
    data => {
      if (data.status['message'] === 'Success.') {
        return this.http.post('api/createuser');
      }
    }
  ));
}

希望大家帮忙 提前致谢

最佳答案

要像您一样通过管道传输不同的 HttpClient 请求,您应该考虑使用管道运算符 switchMap。此外,我不确定是否需要您的 if 语句,因为您已经在 Observable 的成功回调中。

你可以使用这样的东西:

public signupform(userData: SignupRequest): Observable<any> {
  return this.http.post('api/createorganisation')
    .pipe(
      switchMap(() => this.http.post('api/createuser'))
    );
}

订阅时,您将依次触发两个查询并获得第二个查询返回的结果。

希望对您有所帮助!

关于angular - 提交具有条件的两个不同 Api 的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56866010/

相关文章:

javascript - 如何从 window.print 中删除日期?

javascript - Angular errorHandler vs window.onError 全局错误处理

angular - 如何将 Angular Material 表导出为 excel 或 pdf 或 csv

typescript - Vue 3 - Composition Api - Typescript -> 发射类型

TypeScript:在对象上强制执行单个动态键

arrays - 从对象数组中获取值

angular - 如何在 RxJS 中使用 await

angular - 如何在 PrimeNG 中增加 pTooltip 的宽度

javascript - 将 UTC 时间格式拆分为 Angular2 中所需的格式

sqlite - 如何通过服务加载多个数据并在 Angular2 中等待