Я создаю общий загрузчик в ionic 3, но есть проблема из-за ручного использования loader.dismiss()
Вместо создания загрузчика с помощью loaderCtrl
для очень http
запроса в ionic I'mпланирую сделать только один загрузчик.Я использую httpInterceptor
и когда запрос перехвачен, я создал и представляю загрузчик.И я проверяю, имеет ли событие тип HttpRequest
, если да, загрузчик отклоняется.
Это прекрасно работает, когда на любой странице выполняется только запрос http
, т.е. запрос сделан, он перехвачен загрузчиком.представляется позже, когда ответ получен, загрузчик отклоняется.
Но теперь, если на 1 странице сделано 2 запроса, я выдаю ошибку removeView
not Found .
/ loaderInterceptor.ts
@Injectable()
export class HttpLoaderInterceptor implements HttpInterceptor {
headersConfig: any;
loader: any
constructor(public loadingCtrl: LoadingController) { }
intercept(req: HttpRequest<any>, next: HttpHandler):
Observable<HttpEvent<any>> {
this.loader = this.loadingCtrl.create({
content: "Please wait",
});
this.loader.present()
return next.handle(req).pipe(tap((event: HttpEvent<any>) => {
if (event instanceof HttpResponse) {
this.loader.dismiss();
}
},
(err: any) => {
this.loader.dismiss();
}));
}
}
Метод dismissing вызывается дважды, когда получено 2 ответа, и во 2-й раз нет загрузчика, который должен быть отклонен, поэтому мы получаемошибка.Пожалуйста, помогите.