Угловой выбор нужной опции
Я не могу узнать, как использовать необходимую опцию в 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>
но не повезло там..
Есть идеи?
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;
}
Удачного кодирования!
Кроме того, когда вы используете ответ @Majedur Rahaman, не забудьте установить
name
атрибут на
ng-select
ввод.
Это стоило мне нескольких часов.
Вы должны проверить значение 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
,