Как скрыть загрузчик по всем HTTP-запросам, выполненным в угловых 4/6/7? - PullRequest
0 голосов
/ 25 апреля 2019

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

Я новичок в angular и не могу найти способ его реализовать.

Пожалуйста, помогите мне!

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Ну, чтобы это произошло, нужно сделать несколько вещей:

  1. сделать глобальный запрос инъекционным сервисом, который будет обслуживать ваши HTTP-запросы. добавьте туда счетчик (он будет увеличиваться с каждым запросом и уменьшаться после окончания)

Например:

@Injectable()
export class MyHTTPService {
public query(params: AjaxQueryClass) {
        ++this.requests_counter;
        return this.http.post(this.serverURI, JSON.stringify(params), { withCredentials: true})
        .toPromise()
        .then(d => {
                --this.requests_counter;
                return d;
            })
            .catch(err => {
                console.log(err);
                return new EmptyObservable();
            });

хорошо, вы можете использовать Observables, а не Promises, но идея должна быть ясной - каждый запрос увеличивает счетчик, и он будет отображаться на экране до завершения последнего запроса. Используйте этот сервис в каждом компоненте и выполняйте запросы к серверу только с ним.

  1. создайте прозрачное наложение с хорошей анимацией и поместите его в AppComponent (основной компонент) с помощью этого в шаблоне:

<div id="overlay" *ngIf="counter == 0"></div>
  1. В коде AppComponanet должно быть что-то вроде этого:

    public counter = 0;
    ngDoCheck() {
       this.counter = this.my_http_service.requests_counter;
    }
    constructor(private my_http_service: MyHTTPService) {}

Как написать CSS для прозрачных оверлеев, вы найдете в Google. О том, как писать инъекционные препараты, вы можете узнать из учебника по Angular Hero.

0 голосов
/ 25 апреля 2019

Это зависит от типа «загрузчика», который вы хотите сделать. Если вы реализуете HTTP-запросы с помощью Observables, вы можете подписаться, чтобы дождаться результата, в том же блоке - вы можете открыть модальное окно (индикация загрузки) или обновить свой индикатор выполнения. После использования оператора .then () закройте модальный режим или доведите прогресс до 100%.

Все зависит от вас и вашего видения.

Документация: угловые наблюдаемые

В то же время уже есть много похожих вопросов с некоторым кодом и прогрессом:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...