2017-10-10 6 views
1

Je rencontre des problèmes lors de l'affichage des messages d'erreur pour l'attribut maxlength dans Angular.Message de validation angulaire pour l'attribut maxlength

Problème

Depuis l'maxlength attribut ne permettent pas plus de caractères que le montant indiqué, je vais avoir des difficultés à afficher mon message d'erreur. Est-il possible de désactiver le comportement par défaut (permettre à l'utilisateur de taper plus de caractères), afin d'afficher mon message d'erreur.

code

pour textarea

<textarea maxlength="10" 
      [(ngModel)]="title.value" 
      #title="ngModel"></textarea> 

Code pour la validation angulaire

<div *ngIf="title.errors && (title.dirty || title.touched)" 
     class="alert alert-danger"> 
    <div [hidden]="!title.errors.maxlength"> 
     Only 10 characters allowed. 
    </div> 
</div> 

Si vous me voulez fournir toute information supplémentaire, s'il vous plaît laissez-moi savoir.

+0

Quel est le titre dans 'title.errors'? Avez-vous déclaré quelque part? .. –

+0

titre se réfère à la ngModel de la zone de texte. J'ai oublié d'entrer cette information. –

+0

Avez-vous utilisé l'attribut 'novalidate' dans votre tag de formulaire? – Sergaros

Répondre

0

vous pouvez travailler avec des formes réactives pour valider correctement votre formulaire, voici un exemple simple comment utiliser des formes réactives:

import { Component, OnInit } from '@angular/core'; 
import { FormBuilder, FormGroup, Validators } from '@angular/forms'; 

@Component({ 
    selector: 'title-form', 
    template: ` 
    <form novalidate [formGroup]="myForm"> 
     <label> 
     <span>Full title</span> 
     <input type="text" placeholder="title.." formControlName="title"> 
     </label> 
     <div*ngIf="myForm.controls['title'].touched && myForm.get('title').hasError('required')"> 
     Name is required 
     </div> 
     <div *ngIf="myForm.controls['title'].touched && myForm.controls['title'].hasError('maxlength')"> 
     Maximum of 10 characters 
     </div> 
    </form> 
    ` 
}) 
export class TitleFormComponent implements OnInit { 
    myForm: FormGroup; 
    constructor(private fb: FormBuilder) {} 
    ngOnInit() { 
    this.myForm = this.fb.group({ 
     title: ['', [Validators.required, Validators.maxLength(10)]], 
    }); 
    } 

} 

it helps u :)

0

Vous pouvez y arriver par réglage de l'état directement de la longueur de l'entrée:

<textarea class="form-control" id="title" maxlength="10" 
type="number" name="title" [(ngModel)]="titleModel"></textarea> 
<span style="color:red" *ngIf="titleModel?.length > 10"> 
     10 max 
</span> 

DEMO

+0

Aussi, s'il vous plaît vérifier: https://stackoverflow.com/a/46026509/5468463 – Vega

+1

Fix rapide et facile. Aimer. –