it-swarm.com.de

So laden Sie die Komponente derselben URL in Angular 2?

Ich versuche, dieselbe URL in Angular 2 mithilfe von router.navigate neu zu laden, aber es funktioniert nicht .. _. Url: http: // localhost: 3000/landing Szenario : Ich bin auf http: // localhost: 3000/landing und ändere jetzt einen bestimmten Parameter auf der Seite, der die Seite neu laden soll.

Code:

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

Navigieren Sie zu einer Dummy-Komponente und navigieren Sie dann zu der Komponente, die Sie neu laden möchten. // Der zweite Parameter __ skipLocationChange = true, um diese URL in der Zurück-Schaltfläche zu vermeiden

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

Es ist mir gelungen, das Neuladen einer Komponente mithilfe von PlatformLocation: onPopState und NgZone: run im Konstruktor zu implementieren. Es war eine Arbeit, aber zumindest funktionierte es so, wie es nötig war.

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 wurde verwendet, da das Neuladen über die Zurück/Vorwärts-Schaltfläche des Browsers ausgelöst werden sollte. Die Prüfung auf pathname musste auch verwendet werden, da die onPopState-Methode in allen Routen rückwärts/vorwärts aufgerufen wurde, während die Komponente injiziert wurde.

0
Philip John