在Angular中取消或关闭模式后如何不更新数据?

Posted

技术标签:

【中文标题】在Angular中取消或关闭模式后如何不更新数据?【英文标题】:How to not update the data after cancel or close the modal in Angular? 【发布时间】:2022-01-22 00:53:49 【问题描述】:

我创建了一个引导 NgModal。在表格中,点击编辑后 按钮,它包含一个带有一些输入字段的表单。如果我点击保存 它工作正常,但如果我点击取消它正在关闭,但它 正在更新字段数据。我想如果我点击取消它不应该 保存数据或更新数据。

app.component.ts

> import  NgbModalConfig, NgbModal, NgbModalOptions from '@ng-bootstrap/ng-bootstrap';
>     .....
>      constructor(private config: NgbModalConfig, 
>                   private modalService: NgbModal)
>     
>        config.backdrop = 'static';
>         config.keyboard = false; 
>      
>     .....
>     editCharges(event:any, content, aRow, rowIndex)
>         console.log("content of charges: ",content);
>         console.log("aRow: ",aRow);
>         console.log("rowIndex: ",rowIndex);
>         this.chargesDetail = aRow;
>         this.chargesDetail.rowIndex = rowIndex;
>         this.overrideCharges = false;
>         event.target.closest('datatable-body-cell').blur();
>         this.modalService.open(content,size: 'lg', windowClass: 'modal-xl').result.then((result) => 
>             console.log("closed ", result);
>         , (reason) => 
>           console.log("Charges.dismissed " , reason);
>         );
>       

.....

app.component.html

<ngx-datatable-column name="Actions">
                          <ng-template ngx-datatable-cell-template let-row="row" let-rowIndex="rowIndex">
                            <a *ngIf="loggedInUser.userType !== 'RECEIVER'" class="success p-0" data-original-title="" title="Edit" (click)="editGoods($event, goodsContent,row, rowIndex)">
                                <i class="ft-edit-2 font-large-1 mr-2"></i>
                            </a>

....

 <ng-template #chargesContent let-c="close" let-d="dismiss">
  <div class="modal-footer">
          <button type="button" [disabled]="!chargesForm.valid" style="margin-right: 6px;" class="btn btn-raised btn-primary" 
            (click)="saveCharges(chargesForm);c('data saved')">
            <i class="fa fa-check-square-o"></i> Save
          </button>
          <button type="button" class="btn btn-raised btn-warning mr-1" data-dismiss='modal' (click)="d('cancel click')"> 
            <i class="ft-x"></i> Cancel
          </button>
        </div>
    
    </ng-template>

【问题讨论】:

【参考方案1】:

除了@davimargelo 提到的,您需要为您的表单定义正确的行为,在我看来,您还必须在用户单击取消按钮后清除表单对象,我认为您必须正确定义处理程序名称如下所示,

把这个写在你的ts文件里,

onCancel(): void 
    this.yourFormGroupObject.reset();// This will reset the values defined inside the form

【讨论】:

我试过了,但它也会像之前编辑过的一样重置保存的数据。现在数据是空白的。我不需要 你能告诉我你所有的代码吗?我也许能提供更好的帮助?【参考方案2】:

将保存按钮的类型更改为“提交”或将“取消”按钮转换为非按钮

【讨论】:

它不工作

以上是关于在Angular中取消或关闭模式后如何不更新数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不订阅 Angular 表单提交的情况下创建/更新项目

点击取消按钮时删除/关闭 Angular 或 Ionic 5 中的搜索栏

如何打开或关闭windows的测试模式

gis属性表怎么取消全选

如何让xshell软件禁用关闭更新

离子应用程序在弹出框和模式关闭后冻结或停止工作