#angular
#угловое
Вопрос:
Я добавляю угловое условие для моего MatToolTip. Сначала это работает только для назначения 1 строки
matToolTip={{myData.name}}
Но мне нужно добавить условие, подобное следующему
matToolTip={{ myData.hasName : myData.name, myData.hasNoName : myData.NoNameMessage }}
Поступающие данные содержат одно или другое, никогда оба.
Я нашел другой stackoverflow, который, по словам ppl, работает следующим образом, но не в моем коде Angular 7
{{element.source == 1 ? 'upwork' : (element.source == 2 ? 'refer from friend' : '')}}
Я попытался заключить их в одинарные кавычки, но безуспешно. любая помощь приветствуется. Спасибо.
Ответ №1:
Попробуйте это:
[matTooltip]="myData.hasName ? myData.name : (myData.hasNoName? 'myData.NoNameMessage' : null)"
Комментарии:
1. не работает, если мат-кнопка отключена, черт возьми. это потому, что у них обоих [отключен] ввод…
Ответ №2:
Вы можете использовать директиву [matTooltipDisabled] вместо использования троичного оператора или другого более сложного решения.
Пример:
<mat-icon matTooltip="It's closed."
[matTooltipDisabled]="entity.isOpen == true">
close
</mat-icon>
Комментарии:
1. Лучший ответ, ИМО. Смотрите официальную документацию по
matTooltipDisabled
свойству здесь
Ответ №3:
Вы также можете использовать интерполяцию для вызова функции typescript в классе component, которая будет выполнять сложные сценарии if-else. Что-то вроде этого..
<button mat-raised-button
matTooltip={{getToolTip(source)}}
>
Экшен
getToolTip(source)
{
var tooltip = '';
if(source==1)
{
tooltip = 'upwork';
}
else
{
if(source==2){
tooltip = 'refer from friend';
}
}
return tooltip;
}
Комментарии:
1. Спасибо. В angular была всего 1 строка кода по сравнению с typescript, который занимал на несколько строк больше. Данные уже были там, я получал правильный синтаксис. Я хочу сохранить код как можно более скудным.
2. вот почему я упомянул «сложные сценарии if-else» 🙂
3. Вам следует избегать функции в шаблоне и использовать канал. medium.com/showpad-engineering /…