2016-10-14 3 views
0

In meiner Angular App habe ich eine Ansicht und eine Bearbeitungsansicht mit einem Eingabeformular. Das Problem ist:Kreis: window.history.back() und location.back()

Wenn ich den Browser-Zurück-Taste verwenden, window.history.back() oder das Äquivalent location.back() in Angular2 einmal, wird es gut funktionieren wie erwartet.

Aber wenn ich sukzessive (zweimal) die Zurück-Taste des Browsers, window.history.back() oder die entsprechende location.back() triggere, wird ein Kreis gestartet - was bedeutet, dass ich zum ursprünglichen Standort zurückkehre.

Ein weiteres seltsames Verhalten mit den gleichen Seiten ist:

  1. Aus der Sicht I Ansicht bearbeiten gehen mit normalen this.router.navigate ([ '/ edit']);
  2. location.back() zurück
  3. Ich gehe wieder in die Bearbeitungsansicht mit normalen this.router.navigate ([ '/ edit']) anzuzeigen;
  4. Jetzt muss ich drei mal location.back() auslösen, um zurück zu sehen.

Die Geschichte scheint beschädigt zu sein.

Hat jemand eine Idee, was das Problem sein könnte. Ist es möglich, dass es mit der Form korreliert?

Antwort

1

Importieren Sie nicht Routing mehrmals.

Export const-Routing: ModuleWithProviders = RouterModule.forRoot (Routen)

0

begegnete ich das gleiche Problem, während sie von rc4 bis zur endgültigen Migration und hier ist was für mich gearbeitet. Wie auf einer previous answer angegeben, sollten Sie Routen, die zum Haupt-App-Modul gehören, nur einmal mit der Methode RouterModule.forRoot() exportieren.

export const routing: ModuleWithProviders = RouterModule.forRoot(MainModuleRoutes);

Wenn Sie jedoch in Ihrem Haupt-App-Modul importiert Kind-Module haben, die ihre eigenen Wege haben, sollten Sie sie als Kind Routen mit RouterModule.forChild (Export).

export const routing: ModuleWithProviders = RouterModule.forChild(ChildModuleRoutes);

Verwandte Themen