Angular2 OnInit不会触发IE11

时间:2016-07-18 15:01:37

标签: angular ng-init

当您导航到另一个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文件。我如何应用此更新?

由于

1 个答案:

答案 0 :(得分:0)

似乎有几个关于此问题的报告在Angular2 github网站上是重复的。我通过这个链接解决了一个问题: 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中解决这个问题,但这似乎现在有效。