Я пытаюсь показать спиннер во время HTTP-запросов приложения на Angular 7.
Я создал класс HttpInterceptor, сервис загрузчика и компонент загрузчика, а также Subject, представляющий состояние счетчика (показан или скрыт). Однако существует проблема между службой загрузчика и компонентом загрузчика
Кажется, что HttpInterceptor работает нормально, так как консоль выводит состояния true и false (код ниже), однако, похоже, проблема с сервисом загрузчика и компонентом загрузчика. Я использовал директиву ngIf, чтобы показать или скрыть счетчик в соответствии с состоянием субъекта.
LoaderService:
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class LoaderService {
isLoading = new Subject<boolean>();
show() {
console.log('true');
this.isLoading.next(true);
}
hide() {
console.log('false');
this.isLoading.next(false);
}
constructor() { }
}
LoaderComponent
import { Component, OnInit } from '@angular/core';
import {LoaderService} from '../loader.service';
import { Subject } from 'rxjs';
@Component({
selector: 'app-loader',
templateUrl: './loader.component.html',
styleUrls: ['./loader.component.css']
})
export class LoaderComponent implements OnInit {
isLoading: Subject<boolean> = this.loaderService.isLoading;
constructor(private loaderService: LoaderService) { }
ngOnInit() {
}
}
<div *ngIf="isLoading | async " class="d-flex justify-content-center">
<div class="spinner-border" role="status">
<span class="sr-only">Loading...</span>
</div>
</div>
В настоящее время счетчик не отображается или не скрывается вообще. Я получаю «true» в консоли, когда начинается загрузка, и «false», когда она заканчивается.
Я включил селектор загрузчика в файл app.component.html. Это должно работать правильно. Я сделал что-то не так?