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);
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"]);
this.router.navigateByUrl('/DummyComponent', {skipLocationChange: true}).then(()=>
this.router.navigate(["Landing"]));
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.