2017-06-08 32 views
0

我正在使用Inputmask包中的角2.0。我添加了一个带有掩码的日期字段。当我第一次打开该页面时。那么没有错误发生,它工作正常。TypeError:el.inputmask._valueGet不是函数maskScope @ http:// localhost:4200

但是,当我重新访问页,然后它告诉我下面的错误:

ERROR Error: Uncaught (in promise): TypeError: el.inputmask._valueGet is not a function [email protected]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")); 
} 
+0

请提供您的相关代码。 – echonax

+0

In Component import inputmask from“inputmask”; ());}};}}};}}};}} } in view page

回答

0

您应该使用ngAfterViewInit生命周期挂钩,而不是ngOnInit。视图初始化后,你可以肯定的是所有的元素存在:

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

这显然是不建议的方式做到这一点,利用querySelectorAll。这样它就会选择整个文档中的所有input元素。更好的办法是创建一个模板引用变量,并使用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); 
    } 

} 

更妙的是创建一个指示,但我会离开,你要搞懂这个问题

相关问题