如何在 Angular 2+ 中添加自定义验证

Posted

技术标签:

【中文标题】如何在 Angular 2+ 中添加自定义验证【英文标题】:How to add custom validations for handsontable in angular 2+ 【发布时间】:2019-07-11 12:55:25 【问题描述】:

我在 Angular 6 中使用 handsontable。

我尝试了添加自定义验证的代码,该验证显示在我的 Angular 6 组件的官方文档中,但它不起作用。

我搜索了几个网站,但没有找到任何一个示例来说明如何在 Angular 2+ 版本中为 handsOntable 添加自定义验证

谁能告诉我如何在 Angular 2+ 版本中注册自定义验证

提前致谢:)

【问题讨论】:

【参考方案1】:

为电子邮件创建了一个示例自定义验证器并能够设置为一列

emailValidator = (value, callback) => 
  console.log(value)
  setTimeout(function()
    if (/.+@.+/.test(value)) 
      callback(true);
    
    else 
      callback(false);
    
  , 1000);
;

private columns: any[] = [

  data: 'name'
,

  data: 'email',
  validator: this.emailValidator,
  // Uncomment below line accept invalid input and indicate
  // allowInvalid: true

];

@ViewChild(HotTableComponent) hotTableComponent;
// Call validator after initialization
afterInit()   this.hotTableComponent.getHandsontableInstance().validateCells(function(valid));

afterInit 是一个事件发射器

<hot-table [data]="data"
       [colHeaders]="colHeaders"
       [columns]="columns"
       [options]="options"
       (hotInstanceCreated)="instanceCreated($event)"
       (afterInit)="afterInit(event$)"
       [colWidths]="colWidths">

https://stackblitz.com/edit/angular-kjmvq4?file=app%2Fapp.component.ts

【讨论】:

这行得通,但是您知道如何在加载表格时默认验证所有单元格,而不是在编辑单元格时验证吗? 是的,这目前可以通过在 hotTable 实例上调用 validateCells 来实现,但请注意 github.com/handsontable/handsontable/issues/5283 已更新 answer/stackblitz 以加载验证

以上是关于如何在 Angular 2+ 中添加自定义验证的主要内容,如果未能解决你的问题,请参考以下文章

Angular 6. 如何在创建的自定义控件中赋予验证状态这个控件?

Angular2如何对自定义验证器指令进行单元测试?

如何使用 Angular + Spring + JSON 自定义登录/身份验证

Angular 2 提交时触发表单验证

如何使用 Angular 重置自定义表单控件

如何将自定义css和js添加到angular 4