html - Angular 6 - 在垫选择上动态设置[必需]

标签 html angular typescript angular-material

在我的 Angular v6 应用程序中,我尝试显示一个下拉列表,并根据 bool 值将其设置为必需,该 bool 值设置在复选框的值上。以下是我的模板中的代码片段(includeModelVersion 最初设置为 false):

<mat-checkbox class='matCheckbox' (change)="includeModelVersion = !includeModelVersion">Run Model</mat-checkbox>&nbsp;&nbsp;&nbsp;&nbsp;
<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 构造函数中,我定义了 bool 值:

includeModelVersion: boolean = false;

使用 *ngIf,下拉菜单显示正常,但问题与 mat-select 中的 [required]="includeModelVersion" 有关。

如果我不选中该复选框,则表单可以正常提交,但如果我选中该复选框然后取消选中它,则即使includeModelVersion=false,下拉列表仍然是必需的。

我在这里遗漏了一些东西,还是我定义了一些错误的东西?

最佳答案

如果您使用响应式(Reactive)表单,则可以动态地将“必需”验证器添加到 formControl。

this.form.controls["modelVersionCtrl"].setValidators(Validators.required);

您可以根据组件类中的某些条件执行此语句。

关于html - Angular 6 - 在垫选择上动态设置[必需],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52210256/

相关文章:

html - 垂直对齐图像顶部的中间和居中文本

html - 按钮百分比宽度调整大小问题

angular - 如何调试 Angular2/Typescript 中的 Observable 值?

typescript - 应用函数名称和参数的函数类型

javascript - 使用 Angular Directive(指令)更改选定的列表元素颜色

html - 如何保护我的 HTML Metro 应用程序的源代码?

javascript - 如何翻译鼠标 X,Y 坐标以移动容器内的 HTML 元素,其中容器旋转到某个 Angular

typescript - 我应该使用 tsd 还是 typings?

angular - 在 ionic 2 中单击时隐藏和显示

angular - 如何在 Angular 2(路由器 3)中处理租户子域