Conoce la importancia de los formularios para tu sitio web

1

Versiones de Angular Forms

2

驴Por qu茅 aprender Angular Forms?

3

Presentaci贸n del proyecto: tour por los formularios de Platzi Store

4

Novedades de Angular 10: c贸mo migrar proyectos de Angular 8 o 9 a la versi贸n 10

Primeros pasos con Angular Forms

5

Template Forms vs. Reactive Forms

6

Dominando el FormControl y sus estados

7

C贸mo usar inputs de texto y la importancia del type

8

Manejo y binding de selects y selects m煤ltiples

9

Manejo y binding de inputs radio y checkbox

10

Aplica validaciones a un FormControl

11

Integraci贸n y validaciones con CSS para mostrar errores

Descubre todas las validaciones de Angular Forms

12

Usando FormGroup para agrupar multiples campos

13

Reactive Forms con FormBuilder

14

Los 11 validadores de Angular (y expresiones regulares)

15

Manejando m煤ltiples FormsGroups

16

Usando componentes de Angular Material

17

Errores comunes de usabilidad en formularios

18

Validaciones personalizadas: mejorando nuestro formulario de registro

Implemeta validaciones avanzadas en PlatziStore

19

C贸mo hacer validaciones grupales en Angular Forms

20

Validaciones condicionadas y reactividad a variaciones en la UI

21

Proyecto: formulario para crear categor铆as de productos

22

Proyecto: conectando nuestro formulario y la API

23

Proyecto: subir im谩genes a Firebase Storage

24

Validaciones asincr贸nicas

25

PatchValue: crear vs. editar

26

Proyecto: creando el m茅todo de editar categor铆as

Construye formularios din谩micos conectando una API

27

Smart vs. dumb components: un patr贸n para dividir responsabilidades

28

Implementando smart y dumb components en PlatziStore

29

Proyecto: mejorando nuestro formulario de productos

30

Select din谩mico: carga opciones desde una API

31

Select din谩mico: trabajando con objetos

32

驴C贸mo crear campos on demand? Forms din谩micos con FormArray

Estrategias avanzadas y optimizaci贸n de formularios

33

Crea tu propia librer铆a de componentes con CVA o Control Value Accesor

34

Crea un buscador de gifs usando la API de Giphy

35

Optimiza un input de b煤squedas con RxJS y debounce

36

Examina la accesibilidad de tus formularios

37

Siguientes pasos en tu carrera de desarrollo web profesional con Angular

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Reg铆strate

Comienza en:

1D
21H
34M
48S

Usando FormGroup para agrupar multiples campos

12/37
Recursos

Aportes 15

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.


	save(event: Event): void {
		this.form.markAllAsTouched()
		if (this.form.invalid) { return }
		console.log(this.form.value)
	}

Esta fue mi soluci贸n, si es inv谩lido no imprime en consola y marca como touched el controlador name, de esta manera podemos dar feedback al usuario de que ese campo es requerido.

save(event): void | boolean {
    if (this.form.invalid){
      this.form.controls.name.markAsTouched();
      return false;
    }
    console.log(this.form.value);
  }

Se me ocurrio esta soluci贸n:

 <p>
    <button type="submit" [disabled]="form.invalid">Enviar</button>
  </p>

Cual es la diferencia de hacerlo instanciando un new FormGroup y utilizar FormBuilder.group ??

Si les sale el siguiente error en el formulario, se puede solucionar quitando los atributos de name en los radio inputs

If you define both a name and a formControlName attribute on your radio button, their values must match.

como puedo hacer un getter de un formbuilder que tiene dentro varios formArray anidados.

Este video se ve entre cortado y ya intent茅 reproducir en los tres servidores, pero ninguno funciona bien. Porfa arr茅glenlo.

Dejo la pregunta por si alguien la puede responder, cual seria la diferencia entre hacer el return del getter de estas maneras ??

this.from.get('name');
this.from.controls.name

Si estan teniendo errores con versiones de angular mayores a la 10, de que el object is possible null lean esto:

Link

En Angular 14 no se necesita el new en los controles

html

[disabled]="form.invalid"

ts

    event.preventDefault();
    console.log(this.form.value);

Se recomienda hacer un curso de escritura rapida, para escribir asi de rapido como el profe.

En lugar de usar FormGroup y por cada campo crear una nueva instancia de FormCrontrol como en el siguiente c贸digo:

form = new FormGroup ({
name: new FormContro('', Validators.required)
})

Inyect茅 FormBuilder y design茅 los campos que tendr铆a mi formulario, los valores por defecto y los validadores de cada campo :

form;

constructor(private formBuilder: FormBuilder) {}

this.form = this.formBuilder.group({
      nameField: ['', [Validators.required, Validators.maxLength(10)]],
      emailField: ['',Validators.required],
      phoneField: ['',Validators.required],
      colorField: ['#000000',Validators.required],
      ageField: [12,Validators.required],
      dateField: ['', Validators.required],
      categoryField: ['category-1', Validators.required],
      tagsField: ['tag-1', Validators.required],
      agreeField: [false, Validators.required],
      genderField: ['', Validators.required],
      zoneField: ['', Validators.required],
    });

get nameField (){
    return this.form.get('nameField')
  }

   get emailField (){
    return this.form.get('emailField')
  }
   get phoneField (){
    return this.form.get('phoneField')
  }
   get colorField (){
    return this.form.get('colorField')
  }
   get ageField (){
    return this.form.get('ageField')
  }
   get dateField (){
    return this.form.get('dateField')
  }
   get categoryField (){
    return this.form.get('categoryField')
  }
   get tagsField (){
    return this.form.get('tagsField')
  }
   get agreeField (){
    return this.form.get('agreeField')
  }
   get genderField (){
    return this.form.get('genderField')
  }
   get zoneField (){
    return this.form.get('zoneField')
  }

Y para validar que el bot贸n de enviar estuviera habilitado solo cuando se cumplieran las validaciones de cada campo, agregu茅 la siguiente sintaxis al bot贸n submit :

 <button type="submit" [disabled]="form.invalid">Enviar</button>

Esta fu茅 mi soluci贸n:

save(event: any){
    if (this.form.invalid){
      console.error('Formulario Invalido');
    }else{
      console.log(this.form.value);
    }
  }

@Nicobyte Ser铆a mala pr谩ctica usar [(ngModel)] en los campos para enviar los datos la ts? y al final NO obtener los datos de get.form.value, si no de dicha variable?