問題タブ [zonejs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
32862 参照

angular - angular 2 変更検出と ChangeDetectionStrategy.OnPush

ChangeDetectionStrategy.OnPushその仕組みを理解しようとしています。

私の読書から収集したことは、変更検出は古い値と新しい値を比較することによって機能するということです。オブジェクト参照が変更されていない場合、その比較は false を返します。

ただし、その「ルール」がバイパスされる特定のシナリオがあるようです。それがどのように機能するのか説明していただけますか?

0 投票する
2 に答える
848 参照

javascript - ZoneAwarePromise が Meteor で上書きされました

Meteor 1.4.1.1 では、最新の Angular 2.0.1 リリースに更新して以来、このエラーに苦労しています。Zone.js has detected that ZoneAwarePromise (window|global).Promise has been overwritten

試してみましmeteor updatemeteor resetが、エラーはまだあります。

他のすべてのスクリプトの後に Zone.js をロードする必要があるといういくつかの回答を探しました。問題は、Meteor の読み込み順序を制御できないことです。

これが私のpackage.jsonの依存関係です:

ここに私の隕石パッケージがあります:

何か案は ?

0 投票する
1 に答える
205 参照

angular - 外部クラスから Zone コールバックにメソッドをバインドする

環境

angular2のメトリックツールである学生プロジェクトを開始しています。

私は実際に概念実証に取り組んでいます。myLibClass.registerComponents([Component1, Component2,...])これは、このような実装を持つ静的登録メソッドのみを使用して、実行時にコンポーネントのメトリックを取得できるという証明です (疑似コード):

問題

の大域ゾーンを取得するにはどうすればよいangular2ですか? 各呼び出しの実行時間を確認できるように、ng2 ゾーンにメソッドをバインドしたいのですが、NgZoneはそのようなことを行うためのツールを提供していません。

外部クラスからコンポーネントを測定する別のアイデアも大歓迎です

アップデート:

私はいくつかの調査を行い、̀ Zone.current` を使用してグローバルな angular2 ゾーンを取得する方法を見つけました。

問題の 2 番目の部分 (最も難しい部分) がまだ達成されていないため、問題はまだここにあります。

各呼び出しの実行時間を確認できるように、ng2 ゾーンにメソッドをバインドしたいのですが、NgZoneはそのようなことを行うためのツールを提供していません。

これを行う唯一の方法は、angular2 ゾーンをフォークし、angular で使用されている実際のゾーンをフォークされたものに置き換えることです (それが私が見る唯一の方法です)。

それは可能ですか?ゾーンのフォークは問題ありませんが、angular2 に接続できません。

null( ngZone のソース コードでわかるように、発生するすべてのイベントはで発生するよりも多くの情報が必要なのでnull、これでは、呼び出しの名前や呼び出し元など、最後のマイクロタスクについて必要な情報を取得できません。 )、angular2 で使用されるカスタム ゾーンが必要ですが、インスタンス化に DI を使用していないため NgZone を拡張できず、angular2 で使用されるゾーンは引き続き NgZone になります。

0 投票する
1 に答える
410 参照

angular - Using Angular2 on SharePoint 2013 MasterPage leads to Zone.JS error

i build a small angular2 app. I am referencing the appcomponent directly on a custom sharepoint 2013 masterpage. Its loading correctly but when i am opening the settings menu of the sharepoint SharePoint Settingsmenue i got a "Out of stack space" error in the zone.js part.

In the catch block the error is catched. After that error a second one occures directly: "Accessing the 'caller' property of a function or arguments object is not allowed in strict mode".

Following Screenshot shows the error in Firefox console. It occures everytime by hovering an element in the sharepoint settings menue: Zone.js Error in Firefox

Any suggestions will be greate. Thanks for your help, greetings Anton

0 投票する
0 に答える
674 参照

angular - Angular 2 Observable が角度ゾーンから脱落する

アプリケーションの状態のほとんどが、Observable を介して状態を公開する @Injectable サービスに存在する Angular 2 アプリケーション。ある時点で、アプリケーションが Angular Zone から脱落し、変更検出が機能しなくなります。私のサブスクライブではChangeDetectorRef.detectChanges()、これが発生したときに呼び出す必要があります。アプリケーションが Angular Zone から脱落しないようにするにはどうすればよいですか? それとも原因を突き止めますか?

これが私のサービスです:

このサービスを使用しているコンポーネントの ngOnInit 関数は次のとおりです。

これは、Angular Zone からドロップアウトしたときに表示されるコンソール出力です。カレンダー フィルターが 2 番目の値を発行するときに発生するようです。

コンポーネント ツリーのいくつかのレベルにあるコンポーネントに絞り込みました。コンストラクターで Zone.current.name を確認すると、それらはrootゾーンではなくangularゾーンにあります。それらが発行するイベントはroot、親 -> サービス -> サブスクライバーに伝播する場合でも、ゾーンに残ります。

以下は、Angular ゾーンで機能して実行されるコンポーネント テンプレートですが、出力からわかるように、その子である sb-worksite-selector はルート ゾーンで実行されます。

sb-worksite-selector

Worksite セレクターのロギング:

0 投票する
1 に答える
594 参照

angular - Firebase が Angular 2 で変更検出を繰り返しトリガーしないようにするにはどうすればよいですか?

Firebase は、Angular/Zone モンキー パッチ WebsocketsetIntervalなどのために、変更検出をトリガーする多くの内部非同期呼び出しを使用します。アプリを操作していないときでも、常に変更検出のカスケードが発生していることがわかります。特にモバイルでは速度が低下します。

このデフォルトの動作は便利かもしれませんが、現在私が Firebase を使用している方法では、ビューを更新する必要がある時期をかなり厳密に制御できます。そのため、Firebase からのコールバックは、いずれにせよ変更検出が手動で行われるような方法で使用されます。

OnPush私が取り組んでいる変更検出戦略を に設定すると、ここで役立つことはわかっていますが、あらゆる角度からこれを攻撃したいと考えています。

私はゾーンに精通してrunOutsideAngularいますが、すべての非同期呼び出しが Firebase モジュール内で発生しているため、ここに適用するかどうかはわかりません。

Firebase に角度ゾーンの外ですべてのビジネスを行わせるにはどうすればよいですか?


編集:問題を示すコード例: