如何判断在循环内构造的Angular输入中“ form”是否肮脏

时间:2018-08-17 20:07:39

标签: angular typescript

我有一个循环,其中有很多输入。这是一个只有一个输入的简单示例(同样,我的代码每次迭代有很多输入):

<div *ngFor="let item of items; let i = index" >
  <span *ngIf="item.host && !editingHost(i)"
        (click)="enableEditHost(item.id)">
    {{item.host}}
  </span>
  <input type="text"
         *ngIf="item.host && editingHost(i)"
         [(ngModel)]="item.host" />
</div>

此循环后,我有一个提交按钮:

<button mat-raised-button color="accent" [disabled]="!formIsDirty"
        (click)="submit()">
          submit
</button>

如果任何输入值已更改,我希望禁用该按钮。请注意,除非单击span标签将其转换为输入,否则输入什至不会显示。

我没有将输入包装在form标签中,但这也许是一个错误。如何使用formIsDirty作为属性或方法来检测值是否已更改?

我的TS正在使用FormsModule为我的输入支持ngModel:

import { FormsModule } from '@angular/forms';

和更改跟踪器以保持页面更新:

  ngOnChanges(changes: SimpleChanges) {
    for (let propName in changes) {
      let chng = changes[propName];
      let cur  = JSON.stringify(chng.currentValue);
      let prev = JSON.stringify(chng.previousValue);
    }
  }

0 个答案:

没有答案