عند تشغيل اختبار المنقلة ، سينتهي الأمر مهلة لأي مكون باستخدام توجيه الحمل البطيء. تراقب المنقلة 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
بعد تحميل الصورة الكسول ، أليس كذلك؟ لذا يعرف الزاوي أن العرض يحتاج إلى العرض.
بما أنني لا أستطيع إعادة إنتاج هذا ومن اللحامات أن يكون لديك حل عملي. هل تريد تقديم PR؟
بالتأكيد ، سأرى ما إذا كان بإمكاني الحصول على واحدة في غضون الأسبوع المقبل :)
لقد قمت بإنشاء نسخة جديدة من البرنامج المساعد. هل يمكنك تجربتها: npm install [email protected]
لترى ما إذا كانت ستصلح المشكلة؟
بالتأكيد! سأجربه اليوم
إغلاق هذا. اسمحوا لي أن أعرف إذا كنت لا تزال تحصل على المهلات.
tjoskar اختبر هذا للتو اليوم وهو يعمل ، شكرًا لك على الإصلاح! :)
التعليق الأكثر فائدة
بالتأكيد ، سأرى ما إذا كان بإمكاني الحصول على واحدة في غضون الأسبوع المقبل :)