Crear un FormGroup reutilizable

Soy consciente de crear personalizadoscontroles como componentes, pero no puedo entender cómo creargrupos.

Lo mismo podemos hacer estoimplementarControlValueAccessor y usando un componente personalizado como<my-cmp formControlName="foo"></my-cmp>, ¿cómo podemos lograr este efecto paraa grupo?

<my-cmp formGroupName="aGroup"></my-cmp>

Dos casos de uso muy comunes serían (a) dividir una forma larga en pasos, cada paso en un componente separado y (b) encapsular un grupo de campos que aparecen en múltiples formas, como la dirección (grupo de país, estado, ciudad , dirección, número de edificio) o fecha de nacimiento (año, mes, fecha).

Ejemplo de uso (no código de trabajo real)

El padre tiene el siguiente formulario construido conFormBuilder:

// parent model
form = this.fb.group({
  username: '',
  fullName: '',
  password: '',
  address: this.fb.group({
    country: '',
    state: '',
    city: '',
    street: '',
    building: '',
  })
})

Plantilla principal (inaccesible y no semántica por brevedad):

<!-- parent template -->
<form [groupName]="form">
  <input formControlName="username">
  <input formControlName="fullName">
  <input formControlName="password">
  <address-form-group formGroup="address"></address-form-group>
</form>

Ahora estoAddressFormGroupComponent sabe cómo manejar un grupo que tiene estos controles específicos dentro de él.

<!-- child template -->
<input formControlName="country">
<input formControlName="state">
<input formControlName="city">
<input formControlName="street">
<input formControlName="building">

Respuestas a la pregunta(3)

Su respuesta a la pregunta