С выходом Angular 18.1 в этой версии компилятора появилась новая интересная функция: возможность объявлять одну или несколько переменных шаблона.
Как используется эта функция и каковы различные варианты использования?
Эта статья призвана дать ответ.
В последних версиях Angular команда добавила в компилятор новую функциональность, и эта функциональность преобразуется в @-синтаксис.
Так появился новый синтаксис потока управления
а совсем недавно @let
Как правило, самый простой способ создать переменную шаблона — использовать
или используя новый синтаксис потока управления
{{ user.name }}@if(user$ |async; as user){{{ user.name }}}
Эта удобная функция позволила нам сохранить результат асинхронного конвейера в переменной для дальнейшего использования в шаблоне.
Однако этот синтаксис вызывает несколько вопросов. Здесь условие проверяет, является ли возврат асинхронного канала истинным и, следовательно, отличается ли возвращаемое значение от любого значения, считающегося ложным в javascript.
Это условие будет работать очень хорошо, если возвращаемый результат — объект или массив.
но если возвращаемое значение является числом, особенно числом 0
@if(((numbers$ |async) !=== undefined || (numbers$ |async) !=== null) ; as myNumber){{{ myNumber }}}
Здесь на помощь приходит @let.
@let не проверяет условие, он просто позволяет вам простым способом объявить локальную переменную шаблона
так что приведенный выше пример кода становится намного проще и элегантнее в написании
@let myNumber = (numbers$ | async) ?? 0;{{ myNumber }}
Таким образом, переменная myNumber будет отображаться всегда.
Один из самых классических сценариев объявления переменных — сохранение результата сложного выражения.
Использовать функцию в условии всегда было нецелесообразно. Использование функции в условии влияло на производительность в том смысле, что при малейшем движении мыши или изменении шаблона функция пересчитывалась.
@let, как описано выше, не оценивает, а просто объявляет локальную переменную. Эта переменная будет переоценена только в том случае, если изменится одна из ее зависимостей. Так что вызов функции — неплохая идея для таких выражений, как сложное выражение.
@let совместим с сигналами и используется следующим образом
@let userColor = user().preferences?.colors?.primaryColor || 'white';
user favorite color is {{ userColor }}
Как видите, @let можно использовать для оценки любого вида выражения JavaScript, кроме, например, создания экземпляра класса
Таким образом интерпретируются арифметические операторы, и несколько переменных могут быть объявлены в нескольких разных строках или только в одной строке.
@for (score of scores(); track $index) { @let total = total score, max = calcMax(score);final score: {{ total }}
}
Как описано выше, поведение @let очень похоже на поведение let в javascript, которое имеет следующие преимущества
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3