Tenho dois <mat-checkbox>
Valor por embalagem
<mat-checkbox
*ngIf="
statusAtualPode() &&
!fornecedorF.marcouEmbalagem &&
!fornecedorF.marcouTudo
"
[value]="fornecedorF.marcouCheckboxEmbalagem"
[checked]="fornecedorF.marcouCheckboxEmbalagem"
(change)="
defineFornecedorItemEmbalagem($event, fornecedorF)
"
></mat-checkbox>
Valor unitário
<mat-checkbox
*ngIf="
statusAtualPode() &&
!fornecedorF.marcou &&
!fornecedorF.marcouTudo
"
[value]="fornecedorF.marcouCheckbox"
[checked]="fornecedorF.marcouCheckbox"
(change)="defineFornecedorItem($event, fornecedorF)"
></mat-checkbox>
Ele clicou no de 11,00. Quando ele clicar no 550,00, emitir uma mensagem de erro (Isto eu consegui). Mas não consegui desmarcar o mat-checkbox de 550,00 que foi clicado.
Se for ter apenas 2 opções, vc pode apontar o value dos checkboxes para a mesma variável apenas negando em um dos componentes. Com isso, quando o valor da variável mudar (supondo que ela seja booleana), o resultado será da forma como vc espera.
Outra solução poderia trocar de check para radio.
O que vc acha?
1 curtida
Na verdade não posso mudar para rádio.
Um tem o [value]=“fornecedorF.marcouCheckboxEmbalagem” o ou outro tem [value]=“fornecedorF.marcouCheckboxEmbalagem”.
O fornecedorF é uma array.
No typescript esta assim:
async defineFornecedorItem(
tipo: MatCheckboxChange,
modelo: any
): Promise<void> {
if (tipo.checked) {
this.fornecedoresItens.forEach((item) => {
item.fornecedores.forEach((fornecedor: any) => {
if (fornecedor.marcouCheckboxEmbalagem) {
this.errorService.error({
error: {
texto: this.textoEmbalagem,
},
});
this.cdr.detectChanges();
this.fornecedores.find(
(f: any) => f.marcouCheckbox
).marcouCheckbox = false;
return;
}
});
});
}
}
Pelo que entendi deveria desmarcar o checkbox dos 11,00
fornecedorF.marcouCheckbox:
Faltou negar em um deles:
// checkbox embalagem
[value]="!fornecedorF.marcouCheckboxEmbalagem"
// checkbox unitário
[value]="fornecedorF.marcouCheckboxEmbalagem"
Veja se essa abordagem faz sentido.
1 curtida