我正在开发一个表组件,表组件的数据将根据三个下拉值进行填充。我需要将这三个值都传递给API以获得所需的响应。我可以使用嵌套的订阅来实现它,这是一种非常糟糕的方法。但是任何更改都会多次调用API。我怎么修?我发现的大多数例子是只获取最终的订阅值,但在我的例子中,我需要这三个值。任何实现使用的建议
tap
和
flatMap
?
请教。
this._data.currentGroup.subscribe(bg => {
this.bg = bg;
this._data.currentUnit.subscribe(bu => {
this.bu = bu;
this._data.currentFunction.subscribe(jf => {
this.jf = jf;
this.apiService.getFunctionalData(this.bg, this.bu, this.jf)
.subscribe(
(data) => {
console.log(data)
}
);
});
});
});
这就是我所做的。
this._data.currentGroup.pipe(
tap(bg => this.bg = bg),
flatMap(bu => this._data.currentUnit.pipe(
tap(bu => this.bu = bu),
flatMap(jf => this._data.currentFunction.pipe(
tap(jf => this.jf = jf)
))
))
).subscribe();
这是我的示例
dataService
. 我初始化我的
dataservice
在表组件的构造函数中
_data
.
changeGroup(bg: string) {
this.changeGroupData.next(bg);
}
private changeGroupData = new BehaviorSubject<string>('');
currentChangeGroup = this.changeGroupData.asObservable();