Carlos Cifuentes
Referencia AngularJS → Angular

ngMessages en Angular moderno

En Angular no existe un paquete ngMessages. Los mensajes de error son control de flujo común que lee los errores de un control de formulario.

Antes · AngularJS
<input name="email" type="email" ng-model="vm.email" required>
<div ng-messages="f.email.$error" ng-if="f.email.$touched">
  <p ng-message="required">Email is required</p>
  <p ng-message="email">Invalid email</p>
</div>
Después · Angular
<input formControlName="email" type="email" />
@if (email.touched && email.invalid) {
  <div class="errors">
    @if (email.hasError('required')) {
      <p>Email is required</p>
    } @else if (email.hasError('email')) {
      <p>Invalid email</p>
    }
  </div>
}

// component
get email() { return this.form.controls.email; }

Qué cambia

  • ng-messages sobre $error pasa a ser bloques @if que llaman a hasError() en el control.
  • Una cadena @if / @else if muestra un mensaje a la vez, como ng-messages por defecto; bloques @if separados se comportan como ng-messages-multiple.
  • ng-messages-include pasa a ser un componente compartido pequeño que recibe un control y muestra sus errores.

Consejo de migración. Los objetos de error de Angular traen detalles: minlength entrega requiredLength y actualLength. Úsalos para armar el mensaje en vez de repetir el número en el template.

Relacionado

¿Planeas una migración o una plataforma de microfrontends?

En una llamada de 20 minutos me cuentas tu situación y te digo cómo la abordaría. Si todavía no vale la pena, también te lo digo.

Escríbeme por LinkedIn