From ac125fd37375e056af493ab51a5057a753608571 Mon Sep 17 00:00:00 2001 From: "levkovskiy.dmitry" Date: Tue, 17 Jan 2017 18:16:00 +0300 Subject: [PATCH 1/2] resolve #336 --- src/core/watcher-helper.ts | 4 ++++ tests/src/ui/form.spec.ts | 32 +++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/core/watcher-helper.ts b/src/core/watcher-helper.ts index edf2debc4..0f008bb0f 100644 --- a/src/core/watcher-helper.ts +++ b/src/core/watcher-helper.ts @@ -46,6 +46,10 @@ export class WatcherHelper { } private _checkObjectsFields(checkingFromObject: Object, checkingToObject: Object) { + if (!(checkingFromObject && checkingToObject)) { + return true; + } + for (let field in checkingFromObject) { if (checkingFromObject[field] > checkingToObject[field] || checkingFromObject[field] < checkingToObject[field]) { return true; diff --git a/tests/src/ui/form.spec.ts b/tests/src/ui/form.spec.ts index 6b37dcb35..cf6040389 100644 --- a/tests/src/ui/form.spec.ts +++ b/tests/src/ui/form.spec.ts @@ -15,6 +15,7 @@ import DxForm from 'devextreme/ui/form'; import { DxFormModule, + DxTagBoxModule, DxFormComponent } from '../../../dist'; @@ -35,7 +36,7 @@ describe('DxForm', () => { TestBed.configureTestingModule( { declarations: [TestContainerComponent], - imports: [DxFormModule] + imports: [DxFormModule, DxTagBoxModule] }); }); @@ -84,4 +85,33 @@ describe('DxForm', () => { expect(instance.element().find('.dx-textbox').length).toBe(2); })); + it('should work with dxTagBox', async(() => { + TestBed.overrideComponent(TestContainerComponent, { + set: { + template: ` + + ` + } + }); + let fixture = TestBed.createComponent(TestContainerComponent); + fixture.detectChanges(); + + let formInstance = getWidget(fixture); + let tagBoxInstance = formInstance.getEditor('name'); + + tagBoxInstance.option('value', [2]); + fixture.detectChanges(); + + expect(formInstance.option('formData.name')).toEqual([2]); + })); }); From 8e697ab928fb1a852e08addabb177220a43805bd Mon Sep 17 00:00:00 2001 From: "levkovskiy.dmitry" Date: Wed, 18 Jan 2017 10:47:41 +0300 Subject: [PATCH 2/2] Check that oldValue is instance of object before check by fields --- src/core/watcher-helper.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/core/watcher-helper.ts b/src/core/watcher-helper.ts index 0f008bb0f..4c543754d 100644 --- a/src/core/watcher-helper.ts +++ b/src/core/watcher-helper.ts @@ -39,17 +39,13 @@ export class WatcherHelper { } private _isDifferentValues(oldValue: any, newValue: any, deepCheck: boolean) { - if (deepCheck && newValue instanceof (Object)) { + if (deepCheck && newValue instanceof (Object) && oldValue instanceof (Object)) { return this._checkObjectsFields(newValue, oldValue); } return oldValue !== newValue; } private _checkObjectsFields(checkingFromObject: Object, checkingToObject: Object) { - if (!(checkingFromObject && checkingToObject)) { - return true; - } - for (let field in checkingFromObject) { if (checkingFromObject[field] > checkingToObject[field] || checkingFromObject[field] < checkingToObject[field]) { return true;