2016-04-08 14 views
1

I angular2 Ebene js bin mitAngular2: ngOnInit nicht aufgerufen wird, wenn die Komponenten nach history.back geladen wird() in Safari

Das Problem ist, dass ngOnInit() nicht aufgerufen wird, nachdem Komponente nach history.back() geladen wird. Alles funktioniert gut mit meinen Komponenten, wenn ich einfach mit routeLink von einer Komponente zur anderen navigiere.

Meine Komponente sieht wie folgt aus:

Page1Component = ng.core 
    .Component({ 
     selector: 'page1', 
     templateUrl: 'app/components/page1/view.html', 
     directives: [ ng.router.ROUTER_DIRECTIVES] 
    }) 
    .Class({ 
     constructor: [ 
      ng.router.Router, 
      function(router) { 
       console.log("constructor called"); // <- this is called in all cases. 
      } 
     ], 
     ngOnInit: function(){ 
      console.log("ngOnInit"); // <-- This is NOT called when coming from history.back(), but it's working ok in other cases. 
     }, 
     ngAfterContentInit: function(){ 
      console.log("called ngAfterContentInit"); // <-- Same as ngOnInit 
     } 
    }); 

Aus dieser Komponente I zu einer anderen Komponente gehen Router wie folgt aus: [routerLink]="['Page2']" und von Page2 wenn ich history.back()ngOnInit und ngAfterContentInit von Page1 nennen sind nicht genannt.

Das Problem ist nur auf Safari iOS

In meinem index.html I sind:

<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=Intl.~locale.en"></script> 
<script type="text/javascript" src="libs/es6-shim/es6-shim.min.js"></script> 
<script type="text/javascript" src="libs/es6-shim/shims_for_IE.js"></script> 
<script type="text/javascript" src="libs/angular/2.0.0-beta.13/angular2-polyfills.min.js"></script> 
<script type="text/javascript" src="libs/angular/2.0.0-beta.13/Rx.umd.min.js"></script> 
<script type="text/javascript" src="libs/angular/2.0.0-beta.13/angular2-all.umd.js"></script> 

Antwort

2

Das ist ein bekanntes Problem

Manche

eine Sache, die ich springt in Blick auf Ihrer Demo zu überprüfen ist, dass Sie den OnPush ChangeDetectionStrategy auf Ihrem demo.ts Komponente. Diese Strategie wird normalerweise mit Observables oder Änderungen in der Eingabe verwendet, die Angular darüber informieren, dass die Änderungserkennung ausgeführt werden muss. Entfernen Sie den OnPush-Code aus Ihrer demo.ts-Komponente und testen Sie Ihre Paginierungsroute erneut.

werden auch Sie den angular2 polyfills in Ihrer index.html mit einem Tag? Wenn Sie Ihre index.html teilen können, würde das auch helfen.

Verwandte Themen