diff --git a/packages/forms/src/form_builder.ts b/packages/forms/src/form_builder.ts index 03b20b73fb3fe9..296c073ce3d121 100644 --- a/packages/forms/src/form_builder.ts +++ b/packages/forms/src/form_builder.ts @@ -82,7 +82,7 @@ export type ɵElement = // FormControlState object container, which produces a nullable control. [T] extends [FormControlState] ? FormControl : // A ControlConfig tuple, which produces a nullable control. - [T] extends [PermissiveControlConfig] ? FormControl|N> : + [T] extends [PermissiveControlConfig] ? FormControl|N> : FormControl; // clang-format on diff --git a/packages/forms/test/form_builder_spec.ts b/packages/forms/test/form_builder_spec.ts index b0127f75ef4549..0a4a6c39017cd8 100644 --- a/packages/forms/test/form_builder_spec.ts +++ b/packages/forms/test/form_builder_spec.ts @@ -7,7 +7,7 @@ */ import {Component} from '@angular/core'; import {fakeAsync, TestBed, tick} from '@angular/core/testing'; -import {FormBuilder, NonNullableFormBuilder, ReactiveFormsModule, UntypedFormBuilder, Validators} from '@angular/forms'; +import {FormBuilder, NonNullableFormBuilder, ReactiveFormsModule, UntypedFormBuilder, Validators,} from '@angular/forms'; import {of} from 'rxjs'; (function() { @@ -189,6 +189,16 @@ describe('Form Builder', () => { expect(g.asyncValidator).toBe(null); }); + it('should create groups with shorthand parameters and with right typings', () => { + const form = b.group({ + shorthand: [3, Validators.required], + shorthand2: [5, {validators: Validators.required}], + }); + + expect((form.get('shorthand')?.value)).toEqual(3); + expect(((form.get('shorthand2')!.value ?? 0) + 0)).toEqual(5); + }); + it('should create control arrays', () => { const c = b.control('three'); const e = b.control(null);