Angular2 OnInit 不触发 IE11

Angular2 OnInit Not Firing IE11

当您导航到另一个 angular2 路线,然后返回到原始路线时,IE11 似乎没有触发 OnInit。所以要清楚 route1 是有问题的路由,并且是默认路由。当 route1 加载 OnInit 在我的 component1 中正常触发时,我导航到 route2/component2 OnInit 也正常触发。问题是当我导航回 route1/component1 时,OnInit 不会在 IE 中触发,但会在所有其他浏览器中触发。我们正在使用 RC3。

这是我的问题组件:

import { Component, OnInit} from '@angular/core';
import { UdrService} from './udr.service';
import { Widget} from '../widget';

@Component({
    selector: 'udr',
    templateUrl: './Home/RenderUDR',
    providers: [UdrService]
})

export class UdrComponent implements OnInit {
    constructor(private _udrService: UdrService) { }

    widgets: Widget[];

    ngOnInit() {
        this._udrService.getUdrActiveWidgets()
            .subscribe(wdgts => this.widgets = wdgts);
    }
}

谢谢!

编辑 1 --- 我注意到,当 DOM 中发生其他事件时(即在元素上触发 onhover,或者我打开下拉菜单,OnInit 方法触发,似乎当 angular2 更改检测触发时它最终触发 OnInit)

编辑 2 --- 这个问题在 rc4 中仍然存在。看来我的问题是这样的:

https://github.com/angular/angular/issues/10146

修复链接显示 router.ts 的更新。我没有看到该文件捆绑在 npm 包中,只有转译的 router.js 文件。我如何应用此更新?

谢谢

Angular2 github 站点上似乎有几份关于此问题的重复报告。我从这个 link 中解决了一个问题: GitHub Issue

我必须做的唯一修改是 _router.events.subscribe 而不是 _router.subscribe,因为我认为 _router.events.subscribe 对组件路由器来说是新的。

export class AppComponent {

constructor(private _applicationRef: ApplicationRef, private _router: Router) {

    _router.events.subscribe(() => {
        this._applicationRef.tick();
        setTimeout(() => {
            this._applicationRef.tick();
        }, 100);
    });

}

我希望这个问题在 RC5 中得到解决,但这似乎暂时有效。