0

Inputmask在 Angular 2.0 中使用包。我添加了一个带掩码的日期字段。当我第一次打开该页面时。然后没有错误发生,它工作正常。

但是当我重新访问该页面时,它会显示以下错误:

ERROR 错误:未捕获(承诺):TypeError:el.inputmask._valueGet不是函数 maskScope@ http://localhost:4200/0.chunk.js:1391:91

import Inputmask from "inputmask"; 

@Component({
   template: `
     <input type="text" [formControl]="member_since" data-inputmask="'alias':'date'">
   `
})
...
ngOnInit() { 
  Inputmask().mask(document.querySelectorAll("input")); 
} 
4

1 回答 1

0

您应该使用ngAfterViewInit生命周期钩子,而不是ngOnInit. 视图初始化后,您可以确定所有元素都存在:

ngAfterViewInit() { 
    Inputmask().mask(document.querySelectorAll("input")); 
}

这显然不是建议的方法,使用querySelectorAll. 这样,它会选择input整个文档中的所有元素。更好的办法是创建一个模板 ref 变量,并使用ViewChild.

@Component({
    template: `<input type="text" data-inputmask="'alias':'date'" #inputDate>`
})
export class InputDateComponent {

    @ViewChild('inputDate')
    public inputDate: ElementRef;

    ngAfterViewInit() { 
        Inputmask().mask(this.inputDate.nativeElement); 
    }

}

更好的是创建一个指令,但我会留给你来解决这个问题

于 2017-06-08T06:43:06.393 回答