html - Angular 6 - 在 mat-select 上动态设置 [必需]
问题描述
在我的 Angular v6 应用程序中,我试图显示一个下拉菜单并将其设置为required
基于一个布尔值,它是在复选框的值上设置的。这是我的模板中的一段代码(includeModelVersion
最初设置为false
):
<mat-checkbox class='matCheckbox' (change)="includeModelVersion = !includeModelVersion">Run Model</mat-checkbox>
<mat-form-field *ngIf="includeModelVersion">
<mat-select placeholder="Select Model Version" formControlName="modelVersionCtrl" [required]="includeModelVersion">
<mat-option *ngFor="let model of modelData" [value]="model?.MODEL_VERSION">{{model.MODEL_VERSION}}</mat-option>
</mat-select>
</mat-form-field>
在我的 .ts 构造函数中,我定义了我的布尔值:
includeModelVersion: boolean = false;
下拉菜单使用 *ngIf 正确显示,但问题与 inside相关[required]="includeModelVersion"
。mat-select
如果我不选中复选框,则表单可以正常提交,但如果我选中复选框然后取消选中它,下拉菜单仍然是必需的,即使includeModelVersion=false
.
我在这里遗漏了什么,还是我定义错误?
解决方案
如果您使用的是响应式表单,则可以将“必需”验证器动态添加到 formControl。
this.form.controls["modelVersionCtrl"].setValidators(Validators.required);
您可以根据组件类中的某些条件执行此语句。
推荐阅读
- python - 如何从过滤器的字典列表中提取数据
- gzip - 拒绝从 SharePoint Online 母版页中的“myfiles.bundle.js.gz”执行脚本
- asp.net-mvc - ASP.NET Core:会话过期但用户未重定向到登录页面
- excel - 如何使用 VBA 为 Excel 功能区 UI 设置屏幕提示样式
- c - waitpid(WNOHANG) 返回 0,即使子进程应该已经终止
- swift - 计算 Swift 字符串中的前导制表符
- c++ - CMake #include 相对于项目根目录的路径
- function - 超过最大执行时间,google sheet,如何改进?
- python - 如何使用条件任务运行气流 DAG
- redis - 使用 XREADGROUP 获取指定的 id