Usando Angular-IMask, estoy actualizando programáticamente el campo que tiene IMask. Así que estoy recibiendo el error:
"El valor del elemento se cambió fuera de la máscara. Sincronice la máscara usando mask.updateValue() para que funcione correctamente".
Cambio programáticamente la entrada porque tengo un selector de fecha asociado (componente NgbDatepicker del módulo Angular-Bootstrap ng-bootstrap).
¿Cómo puedo obtener el objeto imask para poder llamar a updateValue() ? Configuré el componente solo en la plantilla, por lo que no tengo ningún objeto en el componente al que pueda acceder.
¿Hay alguna otra forma de eliminar ese mensaje además de acceder al objeto IMask? si hay, házmelo saber.
Puede obtener la instancia de IMask consultando la directiva imask usando el decorador de propiedades ViewChild y luego puede acceder a la instancia de IMask desde la directiva a través de la propiedad maskRef .
es decir
@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(); } }Puede usar ViewChild para este componente o usar ngOnChanges de Angular LifeCycle y filtrar este cambio referido para obtener el objeto actual.