我有一个循环,其中有很多输入。这是一个只有一个输入的简单示例(同样,我的代码每次迭代有很多输入):
<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);
}
}