【发布时间】:2018-09-12 22:55:09
【问题描述】:
在我的 Angular v6 应用程序中,我试图显示一个下拉菜单,并根据一个布尔值将其设置为 required,该布尔值是在复选框的值上设置的。这是我模板中该代码的 sn-p(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 可以正确显示下拉列表,但问题与 mat-select 中的 [required]="includeModelVersion" 有关。
如果我不选中复选框,那么表单可以正常提交,但如果我选中复选框然后取消选中它,下拉菜单仍然是必需的,即使 includeModelVersion=false。
我在这里遗漏了什么,还是我定义不正确?
【问题讨论】:
-
你能分享 stackblitz 演示吗?
-
这是一个 stackblitz 演示,当我删除 *ngIf: stackblitz.com/edit/angular-86dmw6 ... 当我包含 *ngIf 时,我收到一个在我自己的开发环境中看不到的错误.不幸的是,我想根据复选框选择隐藏/显示下拉菜单,并且此功能目前在我的本地开发环境中为我工作。也许我应该显示/隐藏一个 div?
标签: html angular typescript angular-material