angular - 取消选择 Angular 中的 Mat 选定值
问题描述
我正在构建一个使用 Angular 12 和 Angular Material 的应用程序。在这我有一个材料选择和一个重置按钮。单击重置按钮时,我需要从 Mat Select 中取消选择所选值。我尝试了各种方法,例如将 [value] 设置为 null 并使用反应式表单将值设置为 null 或空字符串。但它不起作用。
以下是代码文件,以便更好地理解
报警组件.html
<form [formGroup]="dateFormGroup">
<mat-form-field>
<mat-label>{{'Filter'| translate}} {{'DATETIME'|translate}}</mat-label>
<mat-select id="dateTimeSelected" name="dateTimeSelected" formControlName="dateTimeSelected">
<option value="" disabled>{{'Select'|translate}} {{'DATETIME'|translate}}</option>
<mat-option *ngFor="let item of dateTimeArr" [value]="item" (click)="dateTimeFilter(item)">
{{item}}
</mat-option>
</mat-select>
</mat-form-field>
<button mat-flat-button class="btn commonBtn" (click)="resetFilters()">{{'Reset'|translate}}</button>
</form>
警报组件.ts
export class AlarmComponent implements OnInit{
dateFormGroup = new FormGroup({});
constructor(){
this.dateFormGroup = new FormGroup({
dateTimeSelected: new FormControl()
});
}
resetFilters(): any {
console.log(this.dateFormGroup.value.dateTimeSelected);
this.dateFormGroup.value.dateTimeSelected = null;
this.dataSource.filter = '';
this.todoService.getAlerts(this.currentSensorId).subscribe((response: any) => {
this.tableData = [];
this.dateTimeArr = [];
for (let i = 0; i < response.alertResponses.length; i++) {
this.tableData.push(response.alertResponses[i]);
this.dateTimeArr.push(moment(response.alertResponses[i].dated).format('YYYY-MM-DD'));
this.dateTimeArr = [...new Set(this.dateTimeArr)];
}
});
}
}
截图
请问有什么解决办法吗?
解决方案
您不能像这样分配值:this.dateFormGroup.value.dateTimeSelected = null
您必须使用 patchValue 或 setValue 来重置控制值。
this.dateFormGroup.controls['dateTimeSelected'].setValue(null);
推荐阅读
- java - java:使用 BouncyCastle 验证 Ed25519 签名未按预期工作
- c - (C DSA) 为什么在 fgetc() 读取并搜索时,使用 fputc() 写入的字符位置偏移 1?
- python - Discord.py 中 cog 的延迟未被识别为有效属性
- android - Android ListView FindViewById 混淆
- python - 在服务器上无限运行 python 脚本
- javascript - 如何保存此表单以备后用,以 JSON 格式存储序列化数据?
- javascript - 当值未定义时,保持输入状态会中断应用程序
- javascript - 如何检查最近用jquery悬停的元素
- git - 错误:将“.git”转换为绝对错误:访问被拒绝
- scala - Scala:Nothing 和 throw 表达式