在Safari中的history.back()之后加载组件时,不会调用Angular2:ngOnInit

时间:2016-04-08 10:35:19

标签: angular angular2-routing

我正在使用angular2 plain js

问题是在ngOnInit()之后加载组件后未调用history.back()。当我使用routeLink从一个组件导航到另一个组件时,我的组件一切正常。

我的组件如下所示:

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
        }
    });

从这个组件中,当我从{{[routerLink]="['Page2']" Page2history.back()拨打ngOnInitngAfterContentInit时,我会使用路由器,例如:Page1index.html。 1}}没有被调用。

问题仅出在Safari iOS上

在我的<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> 我包括:

"430."000\.000

1 个答案:

答案 0 :(得分:2)

这是一个已知问题

要检查的一些事项

  

在查看演示时跳出来的一件事是你的demo.ts组件上有OnPush ChangeDetectionStrategy。此策略通常与Observables或输入更改一起使用,通知Angular需要运行更改检测。从demo.ts组件中删除OnPush并再次测试您的分页路径。

  

您是否在index.html中添加了带有标签的angular2 polyfill?如果你可以分享你的index.html也会有所帮助。