我无法确定如何在ng-select中使用所需的选项。
我已经尝试过了:
<ng-select
#skills
required
[ngClass]="{ 'is-invalid': f.submitted && skills.invalid }"
[items]="options"
bindLabel="label" bindValue="value"
[multiple]="true" placeholder="Select Skills"
[(ngModel)]="registerUserData.skills"
name="skills[]">
</ng-select>
<div *ngIf="f.submitted && skills.invalid" class="invalid-feedback">
<div *ngIf="skills.errors.required">
Skills are required
</div>
</div>
但那里没有运气。
有什么想法吗?
答案 0 :(得分:1)
required attribute
中没有内置ng-select
。我总是通过form
验证来验证它。
在angular2或更高版本中,可以将ng-select
与ngNativeValidate
指令一起用于模板驱动的表单。
<form #registerUser="ngForm" ngNativeValidate (ngSubmit)="onSubmit()">
<ng-select
class="col-md-8 required"
[items]="options"
bindLabel="label"
bindValue="value"
[multiple]="true"
name="skills"
placeholder="Select Skills"
[(ngModel)]="registerUserData.skills"
required>
</ng-select>
<div *ngIf="!registerUserData.skills" class="invalid-feedback">
Skills are required
</div>
<button type='submit' [disabled]="!registerUser.valid" [isFormValid]="!registerUser.valid">Submit</button>
</form>
当style
或untouched
和touched
时,我还使用自定义invalid
来标记字段。您可以将其放在全局scss
或css
文件中,以与所有component
相同。
SCSS:
ng-select.required.ng-invalid.ng-touched {
.ng-select-container{
border-color: #dc3545;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0 3px #fde6e8;
}
}
ng-select.required.ng-invalid.ng-untouched {
.ng-select-container{
border-color: #dc3545;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0 3px #fde6e8;
}
}
CSS:
ng-select.required.ng-invalid.ng-touched .ng-select-container{
border-color: #dc3545;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0 3px #fde6e8;
}
ng-select.required.ng-invalid.ng-untouched .ng-select-container {
border-color: #dc3545;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0 3px #fde6e8;
}
祝您编程愉快!
答案 1 :(得分:0)
您必须检查registerUserData.skills
的值是否已填充,而不是显示Skills are required
,否则将其隐藏。
也就是说:
<ng-select
#skills
[ngClass]="{ 'is-invalid': f.submitted && skills.invalid }"
[items]="options"
bindLabel="label" bindValue="value"
[multiple]="true" placeholder="Select Skills"
[(ngModel)]="registerUserData.skills"
>
</ng-select>
<div *ngIf="f.submitted && skills.invalid && !registerUserData.skills">
Skills are required
</div>
注意:
我不知道f.submitted
和skills.invalid
是什么,但是假设它们与“提交”按钮事件有关。
使用 ReactiveForms
可以获得更好的结果。
答案 2 :(得分:0)
此外,当您使用@Majedur Rahaman的答案时,请记住在name
输入上设置ng-select
属性。
花了我几个小时。