web-dev-qa-db-fra.com

Comment recharger le composant de la même URL dans Angular 2?

J'essaie de recharger la même URL dans Angular 2 à l'aide de router.navigate mais cela ne fonctionne pas . Url: http: // localhost: 3000/landing Scénario: I suis sur http: // localhost: 3000/landing et maintenant je change un paramètre particulier de la page qui devrait recharger la page.

Code:

let link = ['Landing'];
this.router.navigate(link);
7
Anish

Accédez à un composant factice, puis au composant que vous souhaitez recharger . // le deuxième paramètre __ skipLocationChange = true pour éviter cette url dans le bouton Précédent

this.router.navigateByUrl('/DummyComponent', true);
this.router.navigate(["Landing"]);
14
Pritesh Acharya
this.router.navigateByUrl('/DummyComponent', {skipLocationChange: true}).then(()=>
this.router.navigate(["Landing"]));
3
headbozo

J'ai réussi à implémenter le rechargement d'un composant en utilisant PlatformLocation: onPopState et NgZone: run dans le constructeur. C'était un travail, mais au moins cela fonctionnait comme il était requis.

constructor(
    private route: ActivatedRoute,
    public router: Router,
    private platformLocation: PlatformLocation,
    private ngZone: NgZone) {

    platformLocation.onPopState(() => {
        if(platformLocation.pathname.startsWith("/currentRoute")) {
            this.ngZone.run(() => {
                console.log("Reloading component");
            });
        }
    });
}

onPopState a été utilisé car le rechargement devait être déclenché par le bouton Précédent/Suivant du navigateur. De plus, la vérification de pathname devait être utilisée car la méthode onPopState était invoquée lors du retour/du suivi dans des itinéraires au moment de l'injection du composant.

0
Philip John