当您导航到另一个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文件。我如何应用此更新?
由于
答案 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中解决这个问题,但这似乎现在有效。