Ich habe zwei Routen in meiner Anwendung
1) Nachladen Komponente/home - HomeComponent - Home.html
Angular 2: Wie kann ich meine Daten und HTML-Ansicht verhindern, indem sie nicht auf Browser zurück Navigation
export class HomeComponent implements OnInit, CanReuse,OnReuse, OnActivate, OnDeactivate{
...
constructor(private showHomeLogo:boolean;private showLogoutButton : boolean){
console.log("Home page Constrcutor called");
}
ngOnit(){
//after some service call for user authentication
console.log("Home page ngOnInit called");
this.showLogoutButton = true;
this.showHomeLogo = true;
}
routerCanReuse(nextInstruction: ComponentInstruction,
prevInstruction: ComponentInstruction): boolean {
console.log('routerCanReuse');
return true;
}
routerOnReuse(nextInstruction: ComponentInstruction,
prevInstruction: ComponentInstruction): void {
console.log('route on reuse');
}
routerOnActivate(nextInstruction: ComponentInstruction, prevInstruction: ComponentInstruction): any {
console.log("route activated");
}
routerOnDeActivate(nextInstruction: ComponentInstruction, prevInstruction: ComponentInstruction): any {
console.log("route Deactivated");
}
}
2)/Benutzer - UserComponent - Users.html
export class UserComponent{
...
constructor(){
console.log("Userpage Constrcutor called");
}
navToBack(){
//navigation to back page
window.history.back();
//also tried the following
//window.history.go("-1");
//location.back(); //when I import Location from Angular/common
//router.navigate(['home'])
}
}
Wenn ich klicken zurück, ich bin zurück zur Startseite kommen können.
Aber die Komponente lädt ihren Konstruktor neu und ngOnit, womit ich die vorherigen Auswahlen verliere, um einige Schaltflächen in HTML anzuzeigen oder auszublenden.
Ich verwende den Angular 2 RC1 Router.
Ich muss zurück zur Homepage mit dem gleichen Zustand des HTML, wo es war. d.h. die Komponente nicht erneut zu laden.
Das bedeutet, dass alle meine Auswahlen und Einträge von Eingaben auf der Homepage bleiben sollten.
Ich vermute, das liegt daran, dass meine HomeComponent bei jeder Navigation zu dieser Route neu geladen wird, was meine HTML-Seite zum Anfangszustand führt.
Bitte helfen.
Sie können einen Dienst verwenden, um Zustände zwischen Komponenten zu verwalten. Versuchen Sie das zu tun? – wolfhoundjesse
Ich meine, hier sind die Formulardaten, d. H. Die auf der Homepage eingegebenen Daten, verloren, wenn auf diese Seite zurückgesprungen wird. Ja, ich kann den Dienst verwenden, um diese Formulareinträge zu speichern und wiederherzustellen, wenn ich wieder auf diese Seite zurückkomme. Aber gibt es keinen anderen Weg als Dienstleistungen? – Irus
Es gibt keinen anderen Weg, wenn Sie von einer Komponente weg navigieren. Wenn Sie von einer Route zu einer anderen navigieren, während beide die gleiche Komponente anzeigen und nur die Parameter der Route ändern, ändern Sie '/ somepath /: someparam'. Dann können Sie' CanReuse' verwenden, um den Router anzuweisen, die Komponente nicht zu zerstören und neu zu erstellen. Dies sollte standardmäßig im RC.3 Router sein (scheint aber noch nicht richtig zu funktionieren) –