2017-08-24 5 views
0

J'ai le code exemple suivant:forme angulaire 2 marque invalide

component.html

<form onsubmit="" #VoucherForm="ngForm"> 
    <input type="text" name="field1" [(ngModel)]="rule['condition']" 
    (ngModelChange)="validateJMES($event)">  
<form> 

component.ts

validateJMES(value){ 
    try { 
    this.jmespath.search({ }, value); 
    } catch (e) { 
    // Code that makes Form invalid 
    } 
} 

Alors basiquement i vérifier si l'entrée sur le champ de texte est une expression json valide. Si j'attrape une erreur je voudrais rendre le formulaire invalide.

Existe-t-il un moyen de le faire?

+0

vous devez écrire validateur pour le même? Définir l'état de commande 'INVALID' –

+0

@RahulSingh me donner un exemple pls, j'ai essayé la même approche d'une autre question ici sur stackoverflow, il n'a pas fonctionné pour moi – sHamann

+0

Avez-vous une configuration de validateur pour votre contrôle? – Faisal

Répondre

0

Oui, vous pouvez l'obtenir, mais c'est beaucoup d'efforts dans Template driven que ce que vous utilisez ici.

juste un aperçu de la façon dont vous pouvez y parvenir.

Obtenez une référence de modèle du formulaire en utilisant viewchild. Obtenez le formulaire Contrôle de l'entrée à partir du ngForm et puis définissez le setErrors. LINK.

Une chose comme ça mais c'est juste pour l'entrée que vous pouvez faire pour l'ensemble de la forme.

<input #model="ngModel" [ngModel]="value"> 
<button (click)="model.control.setErrors({})">Invalidate</button> 
+0

https://juristr.com/blog/2016/11/ng2-template- pilot-form-validators/ – sHamann

+0

Je le savais déjà, mais ce n'est pas mon approche sur ce sujet pour l'instant – sHamann

+0

@sHamann quelle est alors votre approche. sans validateur, vous ne pouvez pas définir le formulaire comme invalide. C'est la raison pour laquelle les validateurs sont là. votre cas pourrait être possible avec des formulaires réactifs mais pas avec des formulaires pilotés par template [peut-être pas sûr] –