分度器テストを実行すると、レイジーロードディレクティブを使用してすべてのコンポーネントでタイムアウトします。 分度器はngZoneを監視して、保留中のxhr呼び出し、タイムアウト、および間隔が実行前に完了したことを確認します。
scroll-listener.ts
では、 .sampleTime(100, scheduler)
は、分度器テスト中に終了しない間隔を作成します。 ディレクティブに次のコードを追加することで、これを回避する方法を見つけました
ngAfterContentInit() {
this.ngZone.runOutsideAngular(() => { // run outside angular
this.scrollSubscription = getScrollListener(this._scrollTarget)
.filter(() => this.isVisible())
.take(1)
.switchMap(() => this.loadImage(this.lazyImage))
.do(() => this.setImage(this.lazyImage))
.finally(() => this.setLoadedStyle())
.subscribe(() => this.ngOnDestroy(),
error => {
this.setImage(this.errorImg || this.defaultImg);
this.ngOnDestroy();
});
});
}
これによると、 https: //github.com/angular/protractor/issues/3349#issuecomment -232253059分度器はメインのngZoneを監視しているため、インターバルを実行すると分度器は正常に実行されます。 これがこのプロジェクトの分度器テストでどのように機能するかはわかりませんが、機会があればプルリクエストを行うことができます。
ご意見をいただきありがとうございます。
しかし、これを再現することはできません。 私はこのプロジェクトで分度器を使用していますが、うまく機能するように継ぎ目があります。 ただし、そうは言っても、パフォーマンスを向上させるためにngZone.runOutsideAngular
を使用することをお勧めします。 ただし、 ngZone.runOutsideAngular
を使用している場合は、画像を遅延ロードした後でChangeDetectorRef
を使用する必要があります。 したがって、Angularは、ビューを再レンダリングする必要があることを認識しています。
私はこれを再現することができず、あなたが実用的な解決策を持っていることを縫い合わせているので。 PRを提出しますか?
確かに、私は来週以内にそれを入れることができるかどうか見るでしょう:)
プラグインの新しいバージョンを作成しました。 npm install [email protected]
を試して、問題が解決するかどうかを確認してください。
もちろん! 今日やってみます
これを閉じます。 それでもタイムアウトが発生する場合はお知らせください。
@tjoskarは今日これをテストしたばかりで、機能します。修正していただきありがとうございます。 :)
最も参考になるコメント
確かに、私は来週以内にそれを入れることができるかどうか見るでしょう:)