Estou precisando implementar em um campo mascaras do CNPJ ou CPF, isto é, se for acima de 14 caracteres muda a mascara para CNPJ.
Mesma ideia para telefone, isto é, celular e fixo.
CNPJ, CPF, Telefone, Celular, único eu já vi no npm.
Qual vocês utilizam ?
Se já tem libs das mascaras separadas, entao no evento keydown do input você verifica a quantidade de caracteres e troca a configuração da mascara.
Fiz assim:
public cpfcnpjmask = function (rawValue) {
var numbers = rawValue.match(/\d/g);
var numberLength = 0;
if (numbers) {
numberLength = numbers.join('').length;
}
if (numberLength <= 11) {
return [/[0-9]/, /[0-9]/, /[0-9]/, '.', /[0-9]/, /[0-9]/, /[0-9]/, '.', /[0-9]/, /[0-9]/, /[0-9]/, '-', /[0-9]/, /[0-9]/];
} else {
return [/[0-9]/, /[0-9]/, '.', /[0-9]/, /[0-9]/, /[0-9]/, '.', /[0-9]/, /[0-9]/, /[0-9]/, '/', /[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/, '-', /[0-9]/, /[0-9]/];
}
}
Componente no html
<input matInput placeholder=“Login” name=“login”
[(ngModel)]=“usuarioBuscar.login” [textMask]="{mask: cpfcnpjmask}"
matTooltip=“Login do usuário” maxlength=“20”>
E funcionou. Segui a mesma lógica para telefone e celular. Usando a lib angular2-text-mask.