diff --git a/packages/forms/src/model.ts b/packages/forms/src/model.ts index ffaa339d99..bbda7f1c6b 100644 --- a/packages/forms/src/model.ts +++ b/packages/forms/src/model.ts @@ -44,7 +44,7 @@ function _find(control: AbstractControl, path: Array| string, del return (>path).reduce((v: AbstractControl, name) => { if (v instanceof FormGroup) { - return v.controls[name] || null; + return v.controls.hasOwnProperty(name as string) ? v.controls[name] : null; } if (v instanceof FormArray) { diff --git a/packages/forms/test/form_group_spec.ts b/packages/forms/test/form_group_spec.ts index 7089f245cf..5b3f622070 100644 --- a/packages/forms/test/form_group_spec.ts +++ b/packages/forms/test/form_group_spec.ts @@ -629,6 +629,18 @@ import {of } from 'rxjs'; }); }); + describe('retrieve', () => { + let group: FormGroup; + + beforeEach(() => { + group = new FormGroup({ + 'required': new FormControl('requiredValue'), + }); + }); + + it('should not get inherited properties', + () => { expect(group.get('constructor')).toBe(null); }); + }); describe('statusChanges', () => { let control: FormControl;