1

別の angular2 ルートに移動してから元のルートに戻ったときに、IE11 が OnInit を起動していないようです。したがって、明確にするために、route1 が問題のルートであり、デフォルト ルートです。route1 がコンポーネント 1 で OnInit を正常にロードすると、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);
    }
}

ありがとう!

EDIT 1 --- DOM で他のイベントが発生した場合 (つまり、要素で onhover が発生した場合、またはドロップダウンを開くと、OnInit メソッドが起動することに気付きました。angular2 の変更検出が起動すると、最終的に OnInit が起動するようです)

編集 2 --- 問題は rc4 にまだ存在します。私の問題はこれのようです:

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

修正へのリンクは、router.ts の更新を示しています。npm パッケージにバンドルされているファイルは表示されず、トランスパイルされた router.js ファイルのみが表示されます。この更新プログラムを適用するにはどうすればよいですか?

ありがとう

4

1 に答える 1

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 で解決されることを願っていますが、これは今のところ機能しているようです。

于 2016-07-20T20:51:33.987 に答える