在执行下一个功能之前,如何等待Angular Bootstrap模态窗口的响应?

时间:2019-04-25 22:28:36

标签: angular modal-dialog response

我正在尝试创建一个证明窗口,供用户在将其数据提交到数据库之前验证其输入。

引导程序模态窗口可以工作,但是如果我将func x()放在按钮的(click)=上,则x()在模态显示时执行。

另一个困难是我试图将模式窗口用于三个潜在的数据库更新请求(删除,发布或放置),因此x()必须根据哪个按钮打开了模式窗口而是动态的。

引导程序模态窗口可以工作,但是如果我将func x()放在按钮的(click)=上,则x()在模态显示时执行。

另一个困难是我试图将模式窗口用于三个潜在的数据库更新请求(删除,发布或放置),因此x()必须根据哪个按钮打开了模式窗口而是动态的。

HTML

<span *ngIf="!isCurrent">
                                    <button class="entry" id="add" (click)="openProofWindow(proof, 'add');">Add</button>&nbsp;&nbsp;
                                </span>
                                <span *ngIf="isCurrent">
                                    <button class="entry" id="update" (click)="openProofWindow(proof, 'update');">Update</button>&nbsp;&nbsp; <!--updateRequest();-->
                                    <button class="entry" id="delete" (click)="openProofWindow(proof, 'delete');">Delete</button>&nbsp;&nbsp;
                                </span>

ts代码

 openProofWindow(content, target): void {
 this.modalService.open(content, target);

我尝试过:

(click)="openProofWindow(proof, 'add');addRecord();"

但这会在关闭模式之前执行。

这是模式窗口(HTML)

<div class="modal-header container">
        <div class="row">
            <h4 class="modal-title col-7">Proof Copy</h4>
            <button type="button" class="btn col-2 btn-modal" aria-label="no" (click)="modal.dismiss('cancel click')">
                    <span aria-hidden="true">No</span>
                </button>
            <button type="button" class="btn col-2 btn-modal btn-success" aria-label="ok" ngbAutofocus (click)="modal.close('Ok click');">
                <span aria-hidden="true">Ok</span>
            </button>
        </div>
    </div>

在用户选择“确定”或“否”之前,什么也不会发生。

如果用户选择确定,则取决于模态是作为添加,删除还是更新(放置,删除,发布)请求打开的,应调用相应的功能-并关闭模态窗口。

2 个答案:

答案 0 :(得分:0)

您可以使用此

this.modalService.afterClosed().subscribe(result => {
  console.log('The dialog was closed');
  this.animal = result;
});

我也想参考材料文档here

答案 1 :(得分:0)

我确实找到了答案:

在:

openProofWindow(content, target): void {
 this.modalService.open(content, target);

我设置一个公共变量,而不是在modalService.open中添加一个参数。

public updateType: string;

openProofWindow(content, target): void {
this.updateType = target;
 this.modalService.open(content);

然后,在“确定”按钮中,我打了一个额外的电话:

<button type="button" class="btn col-2 btn-modal btn-success" aria-label="ok" ngbAutofocus (click)="confirmedEdit(); modal.close('Ok click');">
                <span aria-hidden="true">Ok</span>

我需要添加函数以引用变量集:

confirmedEdit(): void {
  console.log(this.updateType);
}

这有效。