在 angular-imask 中,我如何获得 IMask class?

In angular-imask how do I get the IMask class?

使用 Angular-IMask,我正在以编程方式更新具有 IMask 的字段。所以我得到了错误:

“元素值已在掩码之外更改。使用 mask.updateValue() 同步掩码以正常工作。”

我以编程方式更改输入,因为我有一个与之关联的日期选择器(来自 Angular-Bootstrap ng-bootstrap 模块的 NgbDatepicker 组件)。

如何获取 imask 对象以便调用 updateValue() ?我只在模板上设置组件,所以组件中没有任何我可以访问的对象。

除了访问 IMask 对象之外,还有其他方法可以删除该消息吗?如果有请告诉我。

您可以为此组件使用 ViewChild 或使用 Angular LifeCycle 中的 ngOnChanges 并过滤此引用更改以获取当前对象。

您可以通过使用 ViewChild 属性 装饰器查询 imask 指令来获取 IMask 实例,然后您可以通过 maskRef 属性.

@Component({
  template: `
    <input type="text"
        [imask]="maskConfig"
    >
  `,
})
export class MyMaskComponent {
  maskConfig = {...}

  @ViewChild(IMaskDirective, { static: false })
  iMask: IMaskDirective<IMask.MaskedNumber>;

  ngAfterViewInit(): void {
    this.iMask.maskRef.updateValue();
  }
}