Вы должны добавить чек к выписке ngClass
.
В качестве примера вы можете использовать ту же проверку, что и для клика.
например:
<label *ngFor="let radiobutton of radioItems">
<div>
<input type="radio" name="options" (click)="model.option = radiobutton"
[checked]="radiobutton === model.option"
[ngClass]="{'rederror': radiobutton === model.option}">{{radiobutton}}
</div>
</label>
<p>
посмотрите, как это работает Stackblitz
Отредактируйте здесь ваш полный пример:
html:
<div class="modal-body">
<div class="row">
<div class="col-md-4 col-md-offset-3 text-center">
<input formControlName="genderName" type="radio" id="female" (click)="selectedOption=female" value="female"
[ngClass]="{'rederror': selectedOption===female && shake}" [checked]="selectedOption===female">
<label for="female" class="female">Female</label>
</div>
<div class="col-md-4 col-md-pull-1 ml-4">
<input formControlName="genderName" type="radio" id="male" (click)="selectedOption=male"
[checked]="selectedOption===male" [ngClass]="{'rederror': selectedOption===male && shake}">
<label for="male" class="male">Male</label>
</div>
<button type="button" (click)="submit()">Next</button>
</div>
</div>
компоненты:
import { Component, } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
public male = "Male";
public female = "Female";
public selectedOption = this.female;
public shake = false;
public submit() {
this.shake = true;
setTimeout(() => this.shake = false, 500);
}
}
вместе с рабочим Stackblitz !