通过 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 搜索表达式。
所以例如我有以下输入:
<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 搜索表达式。