Я написал простой сервис, который позволяет мне включать / отключать загрузчики по всему моему приложению.Вам просто нужно указать уникальное имя для вызова API:
import { Injectable } from "@angular/core";
@Injectable({
providedIn: "root"
})
export class WatcherService {
private watchers = new Map<String, Boolean>();
public isLoading(watcher: String): Boolean {
return this.watchers.get(watcher) || false;
}
public start(watcher: String) {
this.watchers.set(watcher, true);
}
public stop(watcher: String) {
this.watchers.set(watcher, false);
}
}
Ключом может быть, например, URL-адрес конечной точки API.Вы можете вставить наблюдатель в перехватчик.
Таким образом, вы можете отображать загрузчики где угодно, не беспокоясь о передаче флагов / событий между многими слоями компонентов, просто чтобы показать загрузчик.
Например,, У меня есть список в моей заявке.Я могу получить новые элементы для перечисления из многих мест (фильтры, панель поиска или после прокрутки пользователем вниз).Мне не нужно подключать все компоненты к моему списку, чтобы отобразить загрузчик, я просто должен позвонить:
watcher.start('actionName')
и листинг знает, что на нем должен отображаться загрузчик:
<qlisting [loading]="watcher.isLoading(getUnitsActionName)">