gpt4 book ai didi

angular - 关闭前一个后,一个一个地打开几个mat-dialogs

转载 作者:行者123 更新时间:2023-12-05 02:04:19 25 4
gpt4 key购买 nike

在我的代码中,我有一个按钮,可以浏览数据列表并为每个数据打开一个 mat-dialog

不幸的是,在循环过程中,所有 mat-dialogs 打开。

我希望发生的是,通过使用 dialogRef.afterClosed() 方法,根据结果 (true) 下一个 mat-dialog 打开或 (false) 循环结束。

openDialog(): void {
this.data.forEach(data => {
const dialogRef = this.dialog.open(DialogOverviewExampleDialog, {
disableClose: true
});
dialogRef.componentInstance.data = data;

dialogRef.afterClosed().subscribe(result => {
if (result) {
// open next mat-dialog
} else {
// stop loop
}
});
});
}

<div mat-dialog-actions>
<button mat-button (click)="_dialogRef.close(true)">Ok</button>
<button mat-button (click)="_dialogRef.close(false)">Cancel</button>
</div>

StackBlitz Here

我该怎么做?我不知道该怎么做。

感谢您的帮助。

最佳答案

你可以通过 rxjs takeWhile 实现这一点

from(this.data)
.pipe(
concatMap(x => {
const dialogRef = this.dialog.open(DialogOverviewExampleDialog, {
disableClose: true
});

dialogRef.componentInstance.data = x;

return dialogRef.afterClosed();
}),
takeWhile(Boolean)
).subscribe();

参见 https://stackblitz.com/edit/open-mat-dialogs-one-by-one-after-the-previous-one-is-cl-yqprmt?file=src/app/dialog-overview-example.ts

关于angular - 关闭前一个后,一个一个地打开几个mat-dialogs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64460217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com