angular - 如何延迟 Angular 2+ 中的输入验证

标签 angular angular-directive angular-directive-link

在 AngularJS 中,您可以使用指令设置输入以延迟验证

link(scope, elem, attr, ngModel) {
    ngModel.$overrideModelOptions({
        updateOn: 'default blur',
        debounce: {
            blur: 0,
            default: 500,
        },
    });
}

它的作用是:当输入发生变化时,在输入从有效/无效验证之前给出 500 毫秒的延迟。

在 Angular2+ 中,这似乎更加困难。我想我可以通过可观察对象监听变化并以这种方式更新验证,但我如何告诉初始输入不验证?

最佳答案

因为 Angular 5.0 可以更好地控制何时运行表单验证。您可以将验证配置为在 blur 上运行或 submit使用 updateOn选项。

  1. 响应式表单示例:

将在表单控件模糊上运行验证器:

new FormControl(null, {
  updateOn: 'blur'
});

将在提交表单后运行验证器:

new FormGroup({
  fistName: new FormControl(),
  lastName: new FormControl()
}, { updateOn: 'submit' });
  1. 模板驱动表单:

将在表单控件模糊上运行验证器:

<input [(ngModel)]="firstName" [ngModelOptions]="{updateOn: 'blur'}">

将在提交表单后运行验证器:

更多信息在 docs

正如评论中提到的那样,您也可以订阅表单值更改流,但如果您对延迟表单验证感兴趣,您可能应该查看 updateOn属性(property)。

关于angular - 如何延迟 Angular 2+ 中的输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49680775/

相关文章:

angular - 在 Angular 区域之外运行 ngrx/effect 以防止 Protractor 超时

angular - 在 Angular 2 中解析应用程序组件的正确方法

angular - 使用 REST API 时 mat-table 数据源不起作用

javascript - AngularJS 在数据加载时从 Controller 调用指令函数

javascript - View (DOM) 更新后的调用方法(在 Angular 2 中)

dependency-injection - Angular2 中未注入(inject)服务类

javascript - $compile 不更新动态生成的 html 运行时

node.js - protractor-jasmine2-screenshot-reporter 未在所需文件夹中生成屏幕截图

javascript - 使用指令复制 ng-if