Кнопка изменения и выделения серым цветом до успешного завершения наблюдаемых трансляций

#html #angular #typescript

#HTML #угловой #typescript

Вопрос:

component.html

     <button mat-raised-button color="primary" type="submit">
        <mat-icon>account_box</mat-icon>
        <span *ngIf="!loading">amp;nbsp;amp;nbsp;amp;nbsp;Register</span>
        <span *ngIf="loading">amp;nbsp;amp;nbsp;amp;nbsp;Processing Request</span>
    </button>
 

component.ts

 this.auth.register(this.registerUser).subscribe(
    (success) => {
      this.loading = true;
    },
    (err) => {
      this.success = false;
      this.warning = err.error.message;
      this.loading = false;
    },
    () => {
      this.success = true;
      this.warning = null;
      this.loading = false;          
    }
  );
 

Я хочу изменить кнопку регистрации на запрос обработки и отключить ее, пока наблюдаемый не завершит трансляцию.

В настоящее время ничего не меняется, даже если загрузка имеет значение false.

Ответ №1:

Попробуйте:

     <button [disabled]="loading" mat-raised-button color="primary" type="submit">
        <mat-icon>account_box</mat-icon>
        <span *ngIf="!loading">amp;nbsp;amp;nbsp;amp;nbsp;Register</span>
        <span *ngIf="loading">amp;nbsp;amp;nbsp;amp;nbsp;</span>
    </button>
 

и в коде:

 this.loading = true
this.auth.register(this.registerUser)
  .pipe(finalize(() => this.loading = false)
  .subscribe(
    (success) => {
      // ....
    }
  );