Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 订阅两个可观察对象,即在另一个可观察HTTP中可观察_Javascript_Angular - Fatal编程技术网

Javascript 订阅两个可观察对象,即在另一个可观察HTTP中可观察

Javascript 订阅两个可观察对象,即在另一个可观察HTTP中可观察,javascript,angular,Javascript,Angular,我是个新手。我试图一次发布和获取数据。我正在使用map并订阅可观察对象,而外部可观察对象在组件中订阅 添加(数据){ 返回此.postModel(`pathHere`,data) .管道(映射((响应)=>{ if(各型号){ 返回此.getRoomById(resp.models.id).subscribe(); } })); }我想您需要使用flatMap而不是map作为 添加(数据){ 返回此.postModel(`pathHere`,data) .管道(平面图((响应)=>{ if(

我是个新手。我试图一次发布和获取数据。我正在使用
map
并订阅可观察对象,而外部可观察对象在组件中订阅

添加(数据){
返回此.postModel(`pathHere`,data)
.管道(映射((响应)=>{
if(各型号){
返回此.getRoomById(resp.models.id).subscribe();
}
}));

}
我想您需要使用
flatMap
而不是
map
作为

添加(数据){
返回此.postModel(`pathHere`,data)
.管道(平面图((响应)=>{
if(各型号){
返回这个.getRoomById(resp.models.id);
}
}));
}
您可以使用
switchMap
发出另一个
Observable

当您使用
if
语句检查
resp.models
时,您必须处理
resp.models
不真实的情况

add(data) {
    return this.postModel(`pathHere`, data)
        .pipe(
            switchMap((resp) => {
                if (resp.models) {
                    return this.getRoomById(resp.models.id);
                }
                  return of(resp.models);
            })
        );
}