Ng-lazyload-image: 分度器のタイムアウト

作成日 2016年12月06日  ·  7コメント  ·  ソース: tjoskar/ng-lazyload-image

分度器テストを実行すると、レイジーロードディレクティブを使用してすべてのコンポーネントでタイムアウトします。 分度器は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を監視しているため、インターバルを実行すると分度器は正常に実行されます。 これがこのプロジェクトの分度器テストでどのように機能するかはわかりませんが、機会があればプルリクエストを行うことができます。

最も参考になるコメント

確かに、私は来週以内にそれを入れることができるかどうか見るでしょう:)

全てのコメント7件

ご意見をいただきありがとうございます。
しかし、これを再現することはできません。 私はこのプロジェクトで分度器を使用していますが、うまく機能するように継ぎ目があります。 ただし、そうは言っても、パフォーマンスを向上させるためにngZone.runOutsideAngularを使用することをお勧めします。 ただし、 ngZone.runOutsideAngularを使用している場合は、画像を遅延ロードした後でChangeDetectorRefを使用する必要があります。 したがって、Angularは、ビューを再レンダリングする必要があることを認識しています。

私はこれを再現することができず、あなたが実用的な解決策を持っていることを縫い合わせているので。 PRを提出しますか?

確かに、私は来週以内にそれを入れることができるかどうか見るでしょう:)

プラグインの新しいバージョンを作成しました。 npm install [email protected]を試して、問題が解決するかどうかを確認してください。

もちろん! 今日やってみます

これを閉じます。 それでもタイムアウトが発生する場合はお知らせください。

@tjoskarは今日これをテストしたばかりで、機能します。修正していただきありがとうございます。 :)

このページは役に立ちましたか?
0 / 5 - 0 評価