From 429edb053bf2a5e778665770c373e31fc7d3bfd2 Mon Sep 17 00:00:00 2001 From: Liam DeBeasi Date: Mon, 27 Apr 2020 12:50:44 -0400 Subject: [PATCH] feat(gesture): add option to run inside NgZone for Angular apps (#20685) fixes #20529 --- angular/src/providers/gesture-controller.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/angular/src/providers/gesture-controller.ts b/angular/src/providers/gesture-controller.ts index c69186e3f2..748f65154e 100644 --- a/angular/src/providers/gesture-controller.ts +++ b/angular/src/providers/gesture-controller.ts @@ -1,14 +1,24 @@ -import { Injectable } from '@angular/core'; +import { Injectable, NgZone } from '@angular/core'; import { Gesture, GestureConfig, createGesture } from '@ionic/core'; @Injectable({ providedIn: 'root', }) export class GestureController { + constructor(private zone: NgZone) {} /** * Create a new gesture */ - create(opts: GestureConfig): Gesture { + create(opts: GestureConfig, runInsideAngularZone = false): Gesture { + if (runInsideAngularZone) { + Object.getOwnPropertyNames(opts).forEach(key => { + if (typeof opts[key] === 'function') { + const fn = opts[key]; + opts[key] = (...props) => this.zone.run(() => fn(...props)); + } + }); + } + return createGesture(opts); } }