Добавление опции trackBy в ngFor помогает уменьшить переход между двумя состояниями.Также отключение репплеров с помощью [disableRipple] = "true", по-видимому, уменьшает визуальный эффект:
HTML
<mat-radio-button [disableRipple]="true" *ngFor="let option of tempSublist;
trackBy: trackByFn" ...>
...
Машинопись
next() {
if (this.index < this.list.length - 1) {
//add this ^
...
trackByFn(index, item) {
return index;
}
Я подумал, что было бы неплохо добавить элемент управления для кнопок навигации:
<button [disabled]="index <= 0" (click)="prev()"><<</button>
^- this
<button [disabled]="index === tempSublist.length" (click)="next()">>></button>
^- this
Демо
Если этого недостаточно, при последнем обращении спрячьте и покажите весь блок.Оберните его в div и установите ngIf:
<div *ngIf="isVisible">
<mat-radio-group class="example-radio-group" [(ngModel)]="radioSelected">
...
и используйте тайм-аут в классе по нажатию кнопки:
next() {
isVisible = true;
this.isVisible = false;
if (this.index < this.list.length - 1) {
...
}
setTimeout(() => this.isVisible = true, 30)
}
Demo