代码之家  ›  专栏  ›  技术社区  ›  sHamann

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

  •  0
  • sHamann  · 技术社区  · 7 年前

    例如,我有以下输入:

    <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 回复  |  直到 7 年前
        1
  •  0
  •   sHamann    6 年前

    很早以前就开始工作了,但忘了回答我自己的问题。

    组成部分html

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

    public jmespath = require('../../assets/jmespath.js');
    public valid: bool;
    
    ValidateJMES(newValue){
        try {
            this.jmespath.search({ } , newValue);
            valid = true;
    
        } catch(e) {
            valid = false;
        }
    }
    

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