Mas no meu caso preciso que o campo só aceite casas decimais com até 5 caracteres.
guilhermebhte
Estou com um problema assim:
Ao digitar no campo Quantidade de venda ele altera o quantidade de estoque, ele chama este método: HTML
>
<mat-label>Quantidadedevenda*</mat-label><inputmatInput[formControlName]="'quantidadeVenda'"[readonly]="ver"currencyMask[options]="{ prefix: '', suffix: '', thousands: '.', decimal: ',', precision: 5 }"(ngModelChange)="calculoCustoQuantidadeVenda($event)"/><mat-icon*ngIf="inserir"matSuffixstyle="cursor: pointer"pTooltip="Digitando a quantidade de venda o valor do campo Quantidade de estoque é alterado !">info</mat-icon></mat-form-field>
Ao digitar no campo Quantidade de estoque ele altera o quantidade de venda, com este método: HTML
<mat-form-fieldclass="w-full sm:w-60 mt-4 sm:mt-0 sm:ml-4"><mat-label>Quantidadedeestoque*</mat-label><inputmatInput[formControlName]="'quantidadeEstoque'"[readonly]="ver"currencyMask[options]="{ prefix: '', suffix: '', thousands: '.', decimal: ',', precision: 5 }"(ngModelChange)="calculoCustoQuantidadeEstoque($event)"/><mat-icon*ngIf="inserir"matSuffixstyle="cursor: pointer"pTooltip="Digitando a quantidade de estoque o valor do campo Quantidade de venda é alterado !">info</mat-icon></mat-form-field>
Entendi. Nesse como o evento está aplicado aos dois inputs e um acaba alterando o outro, acaba entrando em loop mesmo. Nunca cai nesse caso, não sei se o angular tem algum mecanismo pronto para tratar essa situação. Pensei em algumas alternativas:
Talvez vc possa fazer algum controle usando uma variável extra, por exemplo, indicando que está editando o campo A e que o evento do campo B seja ignorado e vice-e-versa
Outra forma poderia tentar usar o evento blur para disparar apenas qdo sair do campo
Ou ainda, poderia ter um botão calcular, por exemplo, para executar a lógica em vez de ficar apegado aos eventos.
DICA: Crie uma função de validação para dá uma reduzida no código:
isValid(valor: any): boolean {
return valor !== undefined && valor !== null && valor !== ""
}
Assim em todo lugar onde estiver fazendo essas verificações, apenas chame: isValid(qualquerValor). Vc tambem pode simplificar apenas com:
if(valor&&valor!==0){}
que tb funciona.
Dei uma refatorada (com certeza dá para ser melhorado). Veja o que tu acha: