html - Angular 模板驱动形式:重置值和状态(原始、脏、触摸、无效)
问题描述
在我的模板驱动表单中,里面有很多组和字段。我可以成功重置特定 ngModelGroup 的字段/模型值,但自定义组件的状态 [invalid、touched、dirty] 没有改变。这是代码:
1)HTML
<div ngModelGroup="personGroup" #personGroup="ngModelGroup">
<app-input-text name="name" [(ngModel)]="name" label="Your Name" required></app-input-text>
<app-input-text name="age" [(ngModel)]="age" label="Your Age" required></app-input-text>
<div class="example-container">
<mat-form-field appearance="fill">
<mat-label>Country</mat-label>
<input matInput name="country" placeholder="Your Country" [(ngModel)]="country" required>
</mat-form-field>
</div>
</div>
<button (click)="reset()">Reset</button>
2) 技术支持
export class AppComponent {
name: string;
age: number;
country: string;
@ViewChild("personForm")
private personForm: NgForm;
reset() {
this.personForm.controls['personGroup'].reset();
}
}
当我单击“重置”时,值被清除但组件状态不会改变。
app-input-text 实现了 ControlValueAccessor 并且似乎没问题,除了这种行为。
如何重置值和自定义组件状态?
这是 StackBliz:https ://stackblitz.com/edit/angular-ivy-g2r9g5
提前致谢!
解决方案
推荐阅读
- java - Itext 7.1.16 - 添加两个段落不起作用
- r - 在 formattable 中正确使用 color_bar 以便将其导出为 pdf
- javascript - (Typescript/Javascript) setInterval 方法不能调用其他函数
- z3py - 如何断言z3py中的所有变量相等?
- java - XSLT 中的动态 HashMap
- database - Dart 数据库抽象层
- junit5 - 在与 Maven Surefire 插件 3.0.0-M5 的战斗中升级到 JUnit 5.8.0 会给出 NoSuchMethodError
- javascript - 如何检查 fetch 变量是否有数据
- flutter - 基于索引的图标和颜色
- java - 无法使用 SHIFT + F6 在 Netbeans 中运行文件