ngControlStatus(有效,无效,原始,脏等)无法处理<select>

时间:2017-11-16 16:55:01

标签: angular angular2-forms angular-forms angular4-forms control-state

我正在尝试进行一些表单验证,出于某种原因,当我尝试使用myTest.pristine的条件向我的select添加一个类时,没有任何反应。然而,这在常规输入上工作正常。请参阅下面的示例。 &lt; div class =“form-group”[class.has-error] =“hasPrimaryLanguageError&amp;&amp; primaryLanguage.pristine”&gt;   &lt; label&gt;主要语言*&lt; / label&gt;   &lt; select class =“form-control”#primaryLanguage name =“primaryLanguage”[(ngModel)] =“model.primaryLanguage”&gt;     &lt; option value =“default”&gt;选择语言...&lt; / option&gt;     &lt; option * ngFor =“let lang of languages”&gt; {{lang}}&lt; / option&gt;   &LT; /选择&GT;   &lt; div * ngIf =“hasPrimaryLanguageError&amp;&amp; primaryLanguage.pristine”class =“alert alert-danger”&gt;必需&lt; / div&gt; &LT; / DIV&GT;

2 个答案:

答案 0 :(得分:1)

在进一步研究后,我发现我的#primaryLanguage未设置为等于ngModel。这解决了我的问题。

答案 1 :(得分:0)

您的默认值必须为空,即<; p>

<option value="">Select a Language...</option>

并且最初设置

model.primaryLanguage = "";

所以你的最终代码将是

<div class="form-group" [class.has-error]="hasPrimaryLanguageError && primaryLanguage.pristine">
    <label>Primary Language *</label>
     <select  class="form-control" #primaryLanguage name="primaryLanguage" [(ngModel)]="model.primaryLanguage" required>
       <option value="">Select a Language...</option>
       <option *ngFor="let lang of languages" value="{{yourlanguaugeid}}">{{ lang }}</option>
     </select>
     <div *ngIf="hasPrimaryLanguageError && primaryLanguage.pristine" class="alert alert-danger">Required</div>
 </div>