diff --git a/goldens/public-api/forms/forms.d.ts b/goldens/public-api/forms/forms.d.ts index a2926bb425..e1d7c36544 100644 --- a/goldens/public-api/forms/forms.d.ts +++ b/goldens/public-api/forms/forms.d.ts @@ -6,7 +6,7 @@ export declare abstract class AbstractControl { get enabled(): boolean; readonly errors: ValidationErrors | null; get invalid(): boolean; - get parent(): FormGroup | FormArray; + get parent(): FormGroup | FormArray | null; get pending(): boolean; readonly pristine: boolean; get root(): AbstractControl; diff --git a/packages/forms/src/model.ts b/packages/forms/src/model.ts index f8c2558561..e3356e5726 100644 --- a/packages/forms/src/model.ts +++ b/packages/forms/src/model.ts @@ -173,8 +173,7 @@ export abstract class AbstractControl { // TODO(issue/24571): remove '!'. _updateOn!: FormHooks; - // TODO(issue/24571): remove '!'. - private _parent!: FormGroup|FormArray; + private _parent: FormGroup|FormArray|null = null; private _asyncValidationSubscription: any; /** @@ -267,7 +266,7 @@ export abstract class AbstractControl { /** * The parent control. */ - get parent(): FormGroup|FormArray { + get parent(): FormGroup|FormArray|null { return this._parent; } @@ -1018,7 +1017,7 @@ export abstract class AbstractControl { */ private _parentMarkedDirty(onlySelf?: boolean): boolean { const parentDirty = this._parent && this._parent.dirty; - return !onlySelf && parentDirty && !this._parent._anyControlsDirty(); + return !onlySelf && !!parentDirty && !this._parent!._anyControlsDirty(); } }