通过 Angular 中的 JMESpath 输入验证 2

input validation via JMESpath in Angular 2

所以例如我有以下输入:

<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" 我需要一种方法来捕获错误,它为我检测到输入无效。

我该怎么做才能实现这个目标,或者有比我的尝试更好的方法吗?

很久以前就知道了,但忘了回答我自己的问题。

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 搜索表达式。