1

我有以下示例代码:

组件.html

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

组件.ts

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

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

有没有办法做到这一点?

4

1 回答 1

1

是的,您可以实现它,但是在模板驱动中,您在这里使用的东西需要付出很多努力。

只是如何实现它的要点。

使用获取表单的模板引用。viewchild从 ngForm 获取输入的表单控件,然后设置setErrors. 链接

像这样的事情,但它只是用于输入,您可以为整个表单执行此操作。

<input #model="ngModel" [ngModel]="value">
<button (click)="model.control.setErrors({})">Invalidate</button>
于 2017-08-24T10:18:11.357 回答