Skip to content

Commit 26d9a09

Browse files
authored
Merge branch 'master' into mdragnev/fix-6467-master
2 parents 1b8df92 + 0f02748 commit 26d9a09

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

projects/igniteui-angular/src/lib/core/utils.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,8 @@ export const SUPPORTED_KEYS = new Set([...Array.from(NAVIGATION_KEYS), 'tab', 'e
329329
* @internal
330330
*
331331
* Creates a new ResizeObserver on `target` and returns it as an Observable.
332+
* Run the resizeObservable outside angular zone, because it patches the MutationObserver which causes an infinite loop.
333+
* Related issue: https://github.com/angular/angular/issues/31712
332334
*/
333335
export function resizeObservable(target: HTMLElement): Observable<ResizeObserverEntry[]> {
334336
return new Observable((observer) => {

projects/igniteui-angular/src/lib/slider/slider.component.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ import {
1010
ViewChildren,
1111
QueryList,
1212
ChangeDetectorRef,
13-
OnChanges
13+
OnChanges,
14+
NgZone
1415
} from '@angular/core';
1516
import { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
1617
import { EditorProvider } from '../core/edit-provider';
@@ -771,7 +772,8 @@ export class IgxSliderComponent implements
771772
constructor(
772773
private renderer: Renderer2,
773774
private _el: ElementRef,
774-
private _cdr: ChangeDetectorRef) { }
775+
private _cdr: ChangeDetectorRef,
776+
private _ngZone: NgZone) { }
775777

776778
/**
777779
* @hidden
@@ -1005,11 +1007,13 @@ export class IgxSliderComponent implements
10051007
this.positionHandler(null, labelFrom, this.lowerValue);
10061008
});
10071009

1008-
resizeObservable(this._el.nativeElement).pipe(
1009-
throttleTime(40),
1010-
takeUntil(this._destroyer$)).subscribe(() => {
1011-
this.stepDistance = this.calculateStepDistance();
1012-
});
1010+
this._ngZone.runOutsideAngular(() => {
1011+
resizeObservable(this._el.nativeElement).pipe(
1012+
throttleTime(40),
1013+
takeUntil(this._destroyer$)).subscribe(() => this._ngZone.run( () => {
1014+
this.stepDistance = this.calculateStepDistance();
1015+
}));
1016+
});
10131017
}
10141018

10151019
/**

0 commit comments

Comments
 (0)