Angular 提交带有两个不同Api和条件的表单

Angular 提交带有两个不同Api和条件的表单,angular,typescript,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 =>

我遇到了如何使用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');
      }
    }
  ));
}
公共注册表单(userData:SignupRequest):可观察{
返回此.http.post('api/createOrganization').pipe(点击(//记录结果或错误
数据=>{
如果(数据状态['message']='Success'){
返回此.http.post('api/createuser');
}
}
));
}
希望你们都能帮忙
提前感谢

< P>管道不同的<代码> HTTPcli客< /代码>请求,就像你正在做的那样,你应该考虑使用管道运算符<代码>开关图。此外,我不确定是否需要您的
if
语句,因为您已经在
Observable
的成功回调中

您可以使用类似以下内容:

public signupform(userData: SignupRequest): Observable<any> {
  return this.http.post('api/createorganisation')
    .pipe(
      switchMap(() => this.http.post('api/createuser'))
    );
}
公共注册表单(userData:SignupRequest):可观察{
返回此.http.post('api/createOrganization')
.烟斗(
switchMap(()=>this.http.post('api/createuser'))
);
}
在订阅此查询时,您将依次触发这两个查询,并获得第二个查询返回的结果

希望有帮助

如果有两个API调用,请尝试使用
switchMap()
运算符:

import { map, switchMap } from 'rxjs/operators';

public signupform(userData: SignupRequest): Observable<any>{    
    return this.http.post('api/createorganisation')
        .pipe( 
             switchMap(organis => {
                 return this.http.post('api/createuser');
             })             
         );
}
从'rxjs/operators'导入{map,switchMap};
公共注册表单(userData:SignupRequest):可观察{
返回此.http.post('api/createOrganization')
.管道(
开关图(组织=>{
返回此.http.post('api/createuser');
})             
);
}
更新:

要查看API是否返回数据,您可以记录它:

public signupform(userData: SignupRequest): Observable<any>{    
    return this.http.post('api/createorganisation')
    .pipe( 
       switchMap(organis => {
         console.log('organis: ', organis.json()); // to see data of api/createorganisation
         return this.http.post('api/createuser');
       })             
    );
}
公共注册表单(userData:SignupRequest):可观察{
返回此.http.post('api/createOrganization')
.管道(
开关图(组织=>{
console.log('organi:',organi.json());//查看api/CreateOrganization的数据
返回此.http.post('api/createuser');
})             
);
}

如何检查
api/CreateOrganization
中的数据是否已经存在