Я начал проект с Angular 8 Metroni c.
У меня есть компонент с формой. Я хочу, чтобы счетчик появлялся при нажатии на кнопку отправки и исчезал при ответе API. Вот часть кода компонента:
@Component({
selector: 'change-password',
templateUrl: './change-password.component.html',
styleUrls: ['./change-password.component.scss'],
})
export class ChangePasswordComponent implements OnInit, OnDestroy {
isLoading: boolean = false;
...
submit() {
this.isLoading = true;
this.utilisateurService
.changePassword(changePasswordData).pipe(finalize(() => this.isLoading = false))
.subscribe(() => {});
}
...
}
<form class="kt-form" [formGroup]="changePasswordForm" autocomplete="off">
...
<div class="kt-login__actions">
<button (click)="submit()"
[ngClass]="{'kt-spinner kt-spinner--right kt-spinner--md kt-spinner--light': isLoading}">
Submit
</button>
</div>
</form>
Когда я нажимаю кнопку отправки, свойство isLoading
обновляется до true
и появляется счетчик. Когда выполняется finalize()
, свойство isLoading
обновляется до false
, но счетчик не исчезает ...
Я не понимаю.
Я пытался использовать NgZone, но проблема была та же.
Есть идеи?
Редактировать
Я попробовал нажать и подписаться. Все та же проблема. Проблема только в рендеринге. Если я снова нажму кнопку отправки, свойство isLoading
будет false
, как и ожидалось. Но спиннер все еще работает.