【发布时间】:2019-01-20 04:04:06
【问题描述】:
在 Angular 响应式表单中使用选择控件时,我遇到了一点样式问题。看看我的代码:
<div class="col-md-4">
<div class="form-group has-feedback" [ngClass]="{ 'has-success': form.controls.field.valid && !form.controls.field.pristine, 'has-danger': !form.controls.field.valid && !form.controls.field.pristine}">
<label class="form-form-control-label">Field</label>
<select class="form-control" formControlName="somevalue">
<option *ngFor="let field of fields" value="{{field.id}}">{{field.name}}</option>
</select>
<span class="help-block [style.display]="form.controls.field.valid || form.controls.field.pristine ? 'none': 'inherit'">
<small *ngIf="form.controls.field.hasError('required')">
field is required.
</small>
</span>
</div>
</div>
我对表单中的每个输入都使用这种结构。验证后,此代码工作正常,如果任何字段无效并且由于我在父 div 中使用的 [ngClass] 无效字段的边框变红,它不会提交表单。但是在这个特定的字段中,我使用了选择控件从下拉列表中进行选择,并且在这个字段中显示了验证错误,但没有显示边框上的红色突出显示。我认为有一些默认样式的选择控件会覆盖它。任何人都知道为什么选择控件在无效提交时没有像其他输入字段一样出现红色边框?我在其他字段中使用输入标签。
附:默认情况下,选择控件的值是未定义的,因此只有当用户在提交前忘记从下拉列表中选择一个项目时,它才无效。
【问题讨论】:
标签: angular