【问题标题】:control doesn't show me correct value控制没有显示正确的值
【发布时间】:2021-01-23 07:58:24
【问题描述】:

我需要使用自定义验证,因为我需要检查日期格式是否正确

date: [Validators.required,DateValidator.validateDate].

我正在使用 moment.js 来处理日期,这是我的验证器:

 static validateDate(fdValue: FormControl) {
     const date = fdValue.value;
     console.log(fdValue);

     if(fdValue.errors!=null){
      console.log("error different null");
    }  
     if (date ==null && fdValue.errors!=null && fdValue.errors['matDatepickerParse']!=null){
      return { pattern: {}};
     } 
}

通过此验证,我在输入 13/10/2000 中输入了一个日期,它可以正常工作,但我将此日期输入为“10/0/2000”,但它不起作用。

当我读到console.log(fdValue) 结果时:

errors:
   matDatepickerParse:
     text: "03/0/1977"
   required: true

但是当我执行fdValue.errors!=null 时,如果因为fdValue.errors 为空,它不会输入这些。这是不可能的,因为它会在错误中打印我的值,但程序为空。有人可以帮忙吗?

【问题讨论】:

  • “我把这个日期定在 2000 年 10 月 0 日,但它不起作用”——这不是预期的行为吗?
  • @tomdaly 在这种情况下,当我打印 fberrors 是空字段但 console.log 打印的不是空字段
  • 抱歉,我可能不理解您的问题,除了console.logs 之外,您希望您的函数做什么以及它到底做错了什么?
  • 我想检查日期格式是否正确,我需要打印一条消息。我需要使用这个验证器并打印消息

标签: angular typescript angular-material momentjs angular-moment


【解决方案1】:

如果您需要在日期不正确的情况下打印消息,您可以尝试:

static validateDate(fdValue: FormControl) {
    if(fdValue.errors) {
        console.log("error message goes here");
    }

    const date = fdValue.value;
    if (date == null) {
        return { pattern: {}};
    }
    return date;
}

我不确定您在底部的 if 声明在做什么,但可以根据需要编辑它 - 我已经这样做了,如果您的日期无效,它将返回 { pattern: {}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 2018-07-27
    • 2018-11-27
    相关资源
    最近更新 更多