Après avoir parcouru Effacer l'historique et recharger la page lors de la connexion/déconnexion à l'aide d'Ionic Framework
Je veux savoir la même question, mais pour ionic2 en utilisant TypeScript.
Lors de la connexion et de la déconnexion, j'ai besoin de recharger le app.ts
, car certaines classes exécutent des bibliothèques sur construct.
ce serait essentiellement rediriger vers la maison et recharger.
Ionique 1
Je n'ai pas utilisé Ionic 2, mais j'utilise actuellement Ionic 1.2 et s'ils utilisent toujours ui-router, vous pouvez utiliser reload: true dans ui-sref
ou vous pouvez ajouter le code ci-dessous à votre contrôleur de déconnexion
$state.transitionTo($state.current, $stateParams, {
reload: true,
inherit: false,
notify: true
});
Angulaire 2
Utilisation
$ window.location.reload ();
ou
location.reload ();
J'ai trouvé cette réponse ici , (veuillez noter en particulier la ligne this.navCtrl.setRoot(this.navCtrl.getActive().component);
, qui est de loin la solution la plus simple que j'ai trouvée pour recharger la page actuelle de Ionic 2 & 3 et des versions ultérieures de Angular ( le mien est 4), donc crédit dû en conséquence:
RECHARGER LA PAGE ACTUELLE
import { Component } from '@angular/core';
import { NavController, ModalController} from 'ionic-angular';
@Component({
selector: 'page-example',
templateUrl: 'example.html'
})
export class ExamplePage {
public someVar: any;
constructor(public navCtrl: NavController, private modalCtrl: ModalController) {
}
refreshPage() {
this.navCtrl.setRoot(this.navCtrl.getActive().component);
}
}
Si vous souhaitez RECHARGER UNE DIFFÉRENTE PAGE, veuillez utiliser les éléments suivants (notez this.navCtrl.setRoot(HomePage);
:
import { Component } from '@angular/core';
import { NavController, ModalController} from 'ionic-angular';
import { HomePage } from'../home/home';
@Component({
selector: 'page-example',
templateUrl: 'example.html'
})
export class ExamplePage {
public someVar: any;
constructor(public navCtrl: NavController, private modalCtrl: ModalController) {
}
directToNewPage() {
this.navCtrl.setRoot(HomePage);
}
}
Pour ionic 2, cela fonctionne pour moi lorsque vous forcez le rechargement de page en déclenchant fireWillEnter
sur un contrôleur de vue.
viewController.fireWillEnter();
Voici ce qui a fonctionné pour moi pouractualiser uniquement la page actuelle-
J'essaie d'appeler la fonction refreshMe lorsque j'appelle onDelete à partir de ma page d'affichage.
Voir à quoi ressemble mon fichier page.ts-
export class MyPage {
lines of code goes here like
public arr1: any;
public arr2: any;
public constructor(private nav: NavController, navParams: NavParams) {
this.nav = nav;
this.arr1 = [];
this.arr2 = [];
// console.log("hey array");
}
onDelete() {
perform this set of tasks...
...
...
refreshMe()
}
refreshMe() {
this.nav.setRoot(MyPage);
}
}
Ceci actualise uniquement la page actuelle.
Nous pouvons également appeler cette fonction de vue si nous avons besoin de as--
<ion-col width-60 offset-30 (click)="refreshMe()">
....
....
</ion-col>
C'est un hack, mais ça marche.
Enveloppez la logique qui suit l'ajustement de votre modèle dans une setTimeout
et donnez au navigateur un moment pour effectuer l'actualisation:
/* my code which adjusts the ng 2 html template in some way */
setTimeout(function() {
/* processing which follows the template change */
}, 100);
Vous devez implémenter l'interface CanReuse
et remplacer la routerCanReuse
pour renvoyer false
. Ensuite, essayez d’appeler router.renavigate()
.
Votre composant devrait ressembler à ceci:
class MyComponent implements CanReuse {
// your code here...
routerCanReuse(next: ComponentInstruction, prev: ComponentInstruction) {
return false;
}
}
Et ensuite, lorsque vous vous connectez/déconnectez-vous, appelez:
// navigate to home
router.renavigate()
J'utilise personnellement ces trois lignes pour rafraîchir totalement un composant
let active = this.navCtrl.getActive(); // or getByIndex(int) if you know it
this.navCtrl.remove(active.index);
this.navCtrl.Push(active.component);
Vous pouvez utiliser ionViewWillLeave () pour afficher votre écran de démarrage pendant le rechargement du composant, puis le masquer avec ionViewDidEnter () une fois chargé.
J'espère que ça aide