通过Angular 2中的JMESpath进行输入验证

时间:2017-08-15 14:11:26

标签: javascript angular validation jmespath

所以例如我有以下输入:

<input type="text" name="field1" [(ngModel)]="rule['condition']">
此输入字段中的

跟随输入有效saleschannel.totalamount > 15。目前,我使用jmespath.search({ } , rule['condition'])测试验证。

所以我有以下代码部分

<input type="text" name="field1" [(ngModel)]="rule['condition']"
[class.valid]="jmespath.search({ } , rule['condition'])"> 

问题是,如果我的输入无效导致语法错误,我会收到控制台错误。所以对于[class.invalid]="XXX",我需要一种方法来捕获错误,这会检测到输入无效。

我能做些什么来实现这一目标,还是有比我的尝试更好的方式?

1 个答案:

答案 0 :(得分:0)

很早以前就可以使用它了,但是忘了回答我自己的问题。

component.html

<input type="text" (ngModelChange)="ValidateJMES($event)" [class.valid]="isValid">

component.ts

public jmespath = require('../../assets/jmespath.js');
public valid: bool;

ValidateJMES(newValue){
    try {
        this.jmespath.search({ } , newValue);
        valid = true;

    } catch(e) {
        valid = false;
    }
}

这样,您可以检查输入是否是有效的jmespath搜索表达式。