2017-08-24 31 views
0

我有以下示例代码:角2化妆形式无效

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 
    } 
} 

所以basicly我检查输入在文本字段上是有效的json表达式。 如果我发现错误,我想使表单无效。

有没有办法做到这一点?

+0

你需要编写验证的一样吗?设置控制状态'INVALID' –

+0

@RahulSingh给我一个例子请,我试图从这里计算器的其他问题同样的方法,它并没有为我工作 – sHamann

+0

你有一个验证器设置为你控制? – Faisal

回答

0

是的,你可以实现它,但它是在模板驱动,这是很多努力,因为你在这里使用。

只是你如何实现它的要点。

使用viewchild获取表单的模板引用。获取ngForm输入的表单控件,然后设置setErrorsLINK

有些事情是这样的,但它只是为了输入你可以做整个表单。

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

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

+0

我已经知道了,但这不是我目前在这方面的做法 – sHamann

+0

@sHamann然后你的方法是什么。如果没有验证器,您无法将表单设置为无效。这就是验证者在那里的原因。你的情况可能与反应形式,但不能与模板驱动的形式[可能不确定] –