Условие угловой подсказки внутри интерполяции

#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 /…