diff --git a/tests/app/data/observable-tests.ts b/tests/app/data/observable-tests.ts index a13740541..94227010a 100644 --- a/tests/app/data/observable-tests.ts +++ b/tests/app/data/observable-tests.ts @@ -539,3 +539,23 @@ export function test_NestedObservableWithNullShouldNotCrash() { }); TKUnit.assert(testObservable !== undefined); } + +export function test_get_set_on_observables_fromObject_without_property_in_json() { + const array = new ObservableArray(); + const vm = fromObject({}); + vm.set("p", array); + const value1 = vm.get("p"); + const value2 = (vm).p; + TKUnit.assertEqual(value1, array); + TKUnit.assertNull(value2); +} + +export function test_get_set_on_observables_fromObject_with_property_in_json() { + const array = new ObservableArray(); + const vm = fromObject({ p: null}); + vm.set("p", array); + const value1 = vm.get("p"); + const value2 = (vm).p; + TKUnit.assertEqual(value1, array); + TKUnit.assertEqual(value2, array); +} \ No newline at end of file diff --git a/tns-core-modules/data/observable/observable.ts b/tns-core-modules/data/observable/observable.ts index 329faeeb1..87fbc1d29 100644 --- a/tns-core-modules/data/observable/observable.ts +++ b/tns-core-modules/data/observable/observable.ts @@ -185,6 +185,10 @@ export class Observable implements ObservableDefinition { class ObservableFromObject extends Observable { public _map = {}; + public get(name: string): any { + return this._map[name]; + } + public set(name: string, value: any) { const currentValue = this._map[name]; if (currentValue === value) {