mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
With typed forms, all `FormControl`s are nullable by default, because they can be reset to `null`. This behavior is possible to change by passing the option `initialValueIsDefault: true`. However, in a large form, this is extremely cumbersome, as the option must be repeated over and over. Additionally, it is not possible to take full advantage of `FormBuilder`, since `FormBuilder.group` and `FormBuilder.array` will produce nullable controls.
This PR introduces a new accessor `FormBuilder.nonNullable`, which produces *non-nullable* controls. Specifically, any call to `.control` will produce controls with `{initialValueIsDefault: true}`, and calls to `.array` or `.group` that implicitly build inner controls will have the same effect.
```ts
let nfb = new FormBuilder().nonNullable;
let name = nfb.group({who: 'Alex'}); // FormGroup<{who: FormControl<string>}>
name.reset();
console.log(name); // {who: 'Alex'}
```
PR Close #45852
|
||
|---|---|---|
| .. | ||
| BUILD.bazel | ||
| directives_spec.ts | ||
| form_array_spec.ts | ||
| form_builder_spec.ts | ||
| form_control_spec.ts | ||
| form_group_spec.ts | ||
| reactive_integration_spec.ts | ||
| template_integration_spec.ts | ||
| typed_integration_spec.ts | ||
| util.ts | ||
| validators_spec.ts | ||
| value_accessor_integration_spec.ts | ||