κ°λκΈ° ν
μ€νΈλ₯Ό μ€νν λ μ§μ° λ‘λ μ§μλ¬Έμ μ¬μ©νλ λͺ¨λ κ΅¬μ± μμμμ μκ°μ΄ μ΄κ³Όλ©λλ€. κ°λκΈ°λ μ€ν μ μ 보λ₯ μ€μΈ xhr νΈμΆ, μκ° μ΄κ³Ό λ° κ°κ²©μ΄ μλ£λ λλ₯Ό μκΈ° μν΄ ngZoneμ κ°μν©λλ€.
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λ μ€λ μ΄κ²μ ν μ€νΈνκ³ μλν©λλ€. μμ ν΄ μ£Όμ μ κ°μ¬ν©λλ€! :)
κ°μ₯ μ μ©ν λκΈ
λ¬Όλ‘ , λ€μ μ£Ό μμ λ°μ μ μλμ§ μμλ³΄κ² μ΅λλ€. :)