Mascaras - angular 2 - resolvido

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.