2016-07-25 4 views
0

@ Angleの 'ApplicationRef_.prototype.tick()'と仮定します。角度2 RC4でDOMを正しく更新するためにはcoreが必要ですng2変更検出 - 'ApplicationRef_.prototype.tick()'が定期的に呼び出される原因

5分クイックスタートの例(https://angular.io/guide/quickstart)から作成された角度2のハイブリッドセットアップでは、このメソッドが呼び出されますが、最初は有限時間と呼ばれるようです。

ハイブリッドセットアップ(ng1 & ng2はupgradeAdapterを使用して連携して動作します)の変更検出に問題があります。特定のサーバーでのみ検出されます。これにより、私は変化の検出に深く掘り下げていきます。

私の質問はです: 'ApplicationRef_.prototype.tick()'が定期的に呼び出される原因は何ですか?私のコンポーネントが動作する場合、このメソッドは定期的に呼び出され、5分間のクイックスタートのような有限の時間ではないようです。そして、おそらく私はそれが安定して動作するように強制する必要があります。

申し訳ありませんが、私は私の現在の状況を簡略化し

感謝を生成することができていないと何もplunkerはありません!

+0

最も単純に、Angular2に、 'ApplicationRef.tick'機能は、非同期のイベント(例えばボタンクリック、サーバは応答を返したときに呼び出されます)は、そのコンテキスト内で発生します(Angular2は、その外側のいくつかのランダムなボタンについては気にしません)。 ng1の設定がng2の 'zone'の範囲内にある場合、ng2の変更検出が中断される可能性があります。返信いただきありがとうございます。 –

+0

はい、私の問題は、いくつかの理由で適切にng2の変更の検出とng1のダイジェストサイクルを管理していないupgradeAdapterで何かになる可能性があると思われます...この管理を担当するコードの断片アップデート:それは私が話していた5分のクイックスタートではありませんでした。このハイブリッドセットアップ(plnkr.co/edit/ydzQyjDAKCtcvDE8hNRo?p=preview)は、5分のクイックスタートから作成され、最初はtick()有限の時間だけが最初に呼び出されました。 –

答えて

-1

ng2アップグレードアダプターRC.4 - > 2.0.1 finalでバグが判明しました。 upgrade_adapter.ts

ngZone.onMicrotaskEmpty.subscribe({ 
    next: (_: any) => ngZone.runOutsideAngular(() => rootScope.$evalAsync()) 
}); 

それがに変更された場合:変更検出が動作しているようです

ngZone.onMicrotaskEmpty.subscribe({ 
    next: (_: any) => ngZone.run(() => rootScope.$evalAsync()) 
}); 

一つの欠点がある:これは再導入されます無限$rootScope.$digesthttps://github.com/angular/angular/issues/6385

+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューから](/レビュー/低品質の投稿/ 13909498) –

+0

それを指摘してくれてありがとう。私はそれを編集します。 –

関連する問題