Я использую декораторы для отображения загрузчиков при выполнении любого http-запроса, но я сталкиваюсь с 2 проблемами
1 - При использовании декоратора не вызывается запрос Http;
2 - Как сообщить декоратору, что мой запрос завершен, а затем отменить загрузчик;
import { LoadingController } from '@ionic/angular';
export function loader(mensagem: string, tempo: number = 20000) {
return function (target, key, descriptor) {
var originalMethod = descriptor.value;
descriptor.value = function (...args) {
createLoader(mensagem, tempo);
};
return descriptor;
};
}
async function createLoader(mensagem: string, duracao?: number) {
let loading: LoadingController = new LoadingController();
const loader = await loading.create({
message: mensagem,
spinner: 'crescent',
duration: duracao || 20000
});
return await loader.present();
}
Моя подписка:
@loader('Searching', 10)// Decorator that should dismiss when http request finish
async getEndereco() {// Nothing happends here, even a console.log()
this.eventsService.getAddress(Number(this.activatedRoute.snapshot.paramMap.get('event')))//request
.pipe(takeUntil(this.destroyed$))
.subscribe((address: CustumerAddress) => {
this.form.get('select').patchValue({
address: address.address
description: address.description
});
},
e => {
this.utils.showError(e);
});
}