Skip to content

Commit 76dd4d0

Browse files
committed
Fix known ngZone problems (Update on window.resize, swipe in Pivot)
1 parent 2dcb8ee commit 76dd4d0

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

src/core/events-strategy.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,16 @@ interface EventSubscriber {
1111
export class NgEventsStrategy {
1212
private subscribers: { [key: string]: EventSubscriber[] } = {};
1313

14-
constructor(private component: DxComponent) { }
14+
constructor(private component: DxComponent, private ngZone: NgZone) { }
1515

1616
hasEvent(name: string) {
1717
return this.getEmitter(name).observers.length;
1818
}
1919

2020
fireEvent(name, args) {
21-
this.getEmitter(name).next(args && args[0]);
21+
this.ngZone.run(() => {
22+
this.getEmitter(name).next(args && args[0]);
23+
});
2224
}
2325

2426
on(name, handler) {
@@ -51,15 +53,13 @@ export class NgEventsStrategy {
5153
export class EmitterHelper {
5254
strategy: NgEventsStrategy;
5355

54-
constructor(private ngZone: NgZone, private component: DxComponent) {
55-
this.strategy = new NgEventsStrategy(component);
56+
constructor(ngZone: NgZone, private component: DxComponent) {
57+
this.strategy = new NgEventsStrategy(component, ngZone);
5658
}
5759
fireNgEvent(eventName: string, eventArgs: any) {
5860
let emitter = this.component[eventName];
5961
if (emitter) {
60-
this.ngZone.run(() => {
61-
emitter.next(eventArgs && eventArgs[0]);
62-
});
62+
emitter.next(eventArgs && eventArgs[0]);
6363
}
6464
}
6565
createEmitter(ngEventName: string, dxEventName: string) {

src/core/template.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import {
55
NgModule,
66
TemplateRef,
77
ViewContainerRef,
8-
Input
8+
Input,
9+
NgZone
910
} from '@angular/core';
1011

1112
import { DxTemplateHost } from './template-host';
@@ -31,7 +32,10 @@ export class DxTemplateDirective {
3132
};
3233
name: string;
3334

34-
constructor(private templateRef: TemplateRef<any>, private viewContainerRef: ViewContainerRef, templateHost: DxTemplateHost) {
35+
constructor(private templateRef: TemplateRef<any>,
36+
private viewContainerRef: ViewContainerRef,
37+
templateHost: DxTemplateHost,
38+
private ngZone: NgZone) {
3539
templateHost.setTemplate(this);
3640
}
3741

@@ -42,7 +46,9 @@ export class DxTemplateDirective {
4246
}
4347
// =========== WORKAROUND =============
4448
// https://github.com/angular/angular/issues/12243
45-
childView['detectChanges']();
49+
this.ngZone.run(() => {
50+
childView['detectChanges']();
51+
});
4652
// =========== /WORKAROUND =============
4753
return $(childView.rootNodes)
4854
.addClass(DX_TEMPLATE_WRAPPER_CLASS)

0 commit comments

Comments
 (0)