Escrito el 24/03/2024
Fundamentos de Angular: Form Stateless
Formulario que posee ni modifica el estado interno.
import { Component, Input, Output, EventEmitter } from "@angular/core";
import { ApiService } from "./api.service";
@Component({
selector: "app-form",
template: `
<form #form novalidate (ngSubmit)="handleSubmit(form.value, form.valid)">
<input type="text" name="name" #name="ngModel" required [ngModel]="object?.name>
<div *ngIf="name.errors?.required && name.dirty">Name is required</div>
<button type="submit" [disabled]="form.invalid">Submit</button>
</form>
`,
})
export class AppComponent {
@Input() object: User;
@Output() update: EventEmitter<User> = new EventEmitter<User>();
handleSubmit(formData: User, isValid: boolean) {
if (isValid) {
this.update.emit(formData);
}
}
}
-
Para validación se utiliza
name.errors?.required && name.dirtypara buscar errores sólo cuando el usuario haya interactuado con el input -
Se utiliza
[disabled]="form.invalid"para que el botón no permita presionarse hasta tener el form validado -
Se pasa el valor valid por parámetros en el método
handleSubmitpara evitar que el usuario modifique el input para que no sea requerido.