我有一个Observable,它有一个数组。我想在Observable之外获取该数组,以便我可以将它与另一个数组合并。
this.builderService.getCommercialData()
.subscribe(
data=>{
this.commercialDetails = data;
this.commercialDetailsArray.push(this.commercialDetails);
console.log(this.commercialDetailsArray);
this.newcommercialDetailsArray =
this.commercialDetailsArray[0];
const arrayLength = this.commercialDetailsArray.length;
if (arrayLength < 1) {
this.loaderStatus = false;
this.dataLoaded = false;
this.noData = true;
} else {
this.loaderStatus = false;
this.dataLoaded = true;
this.noData = false;
}
},
error=>{},
);
我想要抓取newcommercialDetailsArray
答案 0 :(得分:1)
您无法使用实际数据访问订阅之外的数组,因为它是a 异步回调,您希望以同步方式访问它。您 可以使用以下
合并订阅内的数组
myArray = [];
this.builderService.getCommercialData()
.subscribe(
data=>{
this.commercialDetails = data;
this.commercialDetailsArray.push(this.commercialDetails);
this.newcommercialDetailsArray =
this.commercialDetailsArray[0];
// do the merge here ;
let myNewArray =
this.newcommercialDetailsArray.concat(this.myArray) ;
const arrayLength = this.commercialDetailsArray.length;
if (arrayLength < 1) {
this.loaderStatus = false;
this.dataLoaded = false;
this.noData = true;
} else {
this.loaderStatus = false;
this.dataLoaded = true;
this.noData = false;
}
},
error=>{},
);
<强>更新强>
如果您需要运行两个可观察对象才能生成数据,则可能需要查看observables.forkJoin()
Fork Join forkJoin()运算符允许我们获取Observable列表 并行执行它们。一旦列表中的每个Observable都发出 forkJoin的值发出一个包含一个的Observable值 列表中Observables的所有已解析值的列表。
更多关于fork join
的示例。
答案 1 :(得分:1)
我使用Angular 2
完成了它
ts文件
ngOnInit() {
this._basicService.getBasic().subscribe(
data => {
this.basicResponse = data;
console.log(this.basicResponse);
return this.basicResponse;
}
)
}
我从服务中获取数据并将其放入basicResponse中,只需将数据从订阅功能控制台返回到另一个onclick函数,以检查basicResponse是否来了。
save()
{
console.log(this.basicResponse)
}
只需返回值。它对我有用