Com a chegada do Angular 18.1, esta versão introduz um novo recurso interessante para o compilador: a capacidade de declarar uma ou mais variáveis de modelo.
Como esse recurso é usado e quais são os diferentes casos de uso?
Este artigo pretende responder.
Com as versões mais recentes do Angular, a equipe introduziu novas funcionalidades no compilador, e essa funcionalidade se traduz na @-sintaxe.
Foi assim que surgiu a nova sintaxe de fluxo de controle
e, mais recentemente, @let
Como regra geral, a maneira mais fácil de criar uma variável de modelo era usar o
ou usando a nova sintaxe de fluxo de controle
{{ user.name }}@if(user$ |async; as user){{{ user.name }}}
Esse recurso útil nos permitiu armazenar o resultado do canal assíncrono em uma variável para uso posterior no modelo.
No entanto, esta sintaxe levanta algumas questões. Aqui, a condição verifica se o retorno do pipe assíncrono é verdadeiro e, portanto, se o valor de retorno é diferente de qualquer valor considerado falso em javascript.
Esta condição funcionará muito bem se o retorno for um objeto ou um array.
mas se o retorno for um número e principalmente o número 0
@if(((numbers$ |async) !=== undefined || (numbers$ |async) !=== null) ; as myNumber){{{ myNumber }}}
É aqui que entra @let.
@let não verifica uma condição, apenas permite que você declare uma variável de modelo local de uma forma simples
então o exemplo de código acima se torna muito mais simples e elegante de escrever
@let myNumber = (numbers$ | async) ?? 0;{{ myNumber }}
Desta forma a variável myNumber sempre será exibida.
Um dos cenários mais clássicos com declaração de variáveis é armazenar o resultado de uma expressão complexa.
Sempre foi desaconselhável usar uma função em uma condição. A utilização de uma função em uma condição teve impacto no desempenho no sentido de que ao menor movimento do mouse, ou alteração no template, a função era reavaliada.
@let, conforme descrito acima, não avalia, mas simplesmente declara uma variável local. Esta variável será reavaliada somente se uma de suas dependências for alterada. Portanto, chamar uma função não é uma má ideia para expressões como expressão complexa.
@let é compatível com sinais e é usado da seguinte forma
@let userColor = user().preferences?.colors?.primaryColor || 'white';
user favorite color is {{ userColor }}
Como você pode ver, @let pode ser usado para avaliar qualquer tipo de expressão javascript, exceto, por exemplo, a instanciação de uma classe
Desta forma, os operadores aritméticos são interpretados e diversas variáveis podem ser declaradas em diversas linhas diferentes ou apenas em uma linha.
@for (score of scores(); track $index) { @let total = total score, max = calcMax(score);final score: {{ total }}
}
Conforme descrito acima, o comportamento de @let é muito semelhante ao comportamento de let em javascript, que tem os seguintes benefícios
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3