Ionique 4: “Chargement du Contrôleur” rejeter() est appelée (avant le présent), qui gardera spinner sans pour autant négliger
J'ai utilisé "Ionique de Chargement Contrôleur" pour afficher un compteur jusqu'à ce que les données sont récupérées puis il appelle "rejeter()" qui l'a rejeté.
il fonctionne très bien, mais parfois, lorsque l'application ont déjà des données, le "rejeter()" est appelée avant la "create()" et "présenter()" est en fait ce qui va maintenir la touche de navigation sans pour autant négliger...
J'ai essayé d'appeler les données à l'intérieur "loadingController.présents().alors()", mais qui a provoqué les données à être plus lent...
est-ce un bug?
comment résoudre ce problème?
Exemple de mon code:
customer: any;
constructor(public loadingController: LoadingController, private customerService: CustomerService)
ngOnInit() {
this.presentLoading().then(a => consloe.log('presented'));
this.customerService.getCustomer('1')
.subscribe(customer => {
this.customer = customer;
this.loadingController.dismiss().then(a => console.log('dismissed'));
}
}
async presentLoading() {
const loading = await this.loadingController.create({
message: 'wait. . .',
duration: 5000
});
return await loading.present();
}
- Avez-vous résoudre ce problème? Je vais avoir le même problème
- Je vais écrire à ma façon de le résoudre, comme réponse, mais je ne suis pas sûr à 100% est la meilleure façon de le faire
Vous devez vous connecter pour publier un commentaire.
c'est comment j'ai résolu mon problème..
J'ai utilisé une variable booléenne "isLoading" pour changer de faux lors de la rejeter() est appelée.
après présente() est terminée si "isLoading" === false (ce qui signifie rejeter() appelle déjà), alors il sera de rejeter immédiatement.
aussi, j'ai écrit le code de service, de sorte que je n'ai pas à écrire de nouveau à chaque page.
de chargement.service.ts
puis il suffit d'appeler présents() et rejeter() de la page.
l'exemple en question:
remarque: n'oubliez pas d'ajouter "LoadingService" à AppModule de fournisseurs de
pour Ionique 4 cochez cette solution
Source Lien
Je suis en utilisant une solution similaire, mais en s'appuyant sur les Ids des superpositions de chargement et de laisser le Ioniques Chargement Contrôleur à gérer la superposition doit être sur le dessus.
LoadingService
Composants/Services à l'aide de la LoadingService
J'ai été confrontée au même problème, j'ai peut-être encore plus facile et plus fiable solution ionique à l'aide de l'événement lui-même. Cela a fonctionné pour moi. Il va attendre jusqu'à ce que le chargeur est créé, et seulement alors, l'appel de service qui va être fait, et uniquement lors de l'appel de service est complet, alors seulement le chargeur est rejeté. J'espère que cela aide..
Alors que la solution retenue peut marcher... je pense que c'est mieux d'avoir de l'1 chargement. Ma solution rejette une précédente chargement, s'il existe, et crée le nouveau. J'ai l'habitude de ne vouloir afficher 1 chargement à un moment (mon cas d'utilisation), de sorte que cette solution fonctionne pour moi.
La solution retenue pose le problème des orphelins de chargements. Mais c'est un bon point de départ .
Par conséquent, c'est ma proposé injectable service (vous pouvez surcharger avec plus ionique paramètres, si vous en avez besoin. Je n'ai pas besoin d'eux donc je n'ai pas ajouter de plus dans la fonction actuelle, mais ils peuvent être ajoutés en conséquence):
La manière la plus simple est d'Ajouter une fonction setTimeOut :
J'ai eu le même problème, apparemment, j'ai pensé à Elle en identifiant d'abord le problème. Ce problème se produit lorsque la durée de ce Chargeur eu expiré alors qu'il est fondamentalement ai rejeté sans notre contrôle..
Maintenant, Il fonctionnera bien Jusqu'à ce que vous êtes aussi à l'aide de
dismiss()
MANUELLEMENT.Donc, si vous allez utiliser
dismiss()
manuellement avec la durée, la suppression de la durée sur créer. ensuite, utilisezsetTimeout()
peut-êtrepuis de créer votre cacher loader ici
Ce onDidDismiss() événement créé après .présents() de la fonction appelée.
Exemple:
même problème ici, et voici ma solution (ionique 4 et angulaire 7):
Commencé à partir de la solution admise.
le présent crée le chargement une fois
Dans la rejeter fonction, j'ai mis isShowing de faux seulement si dimiss retourne true
Sinon, vous devez changer le code d'appel de chargement comme ci-dessous