Как создать условие в атрибуте [отключено]?

#javascript #angular

#javascript #угловой

Вопрос:

Возможно ли иметь условие внутри условия для [disabled] атрибута?

Это моя попытка сделать то, что я пытаюсь сделать для кнопки:

[disabled]="(second.checkoutHasSupplies() || !second.confirmed) amp;amp; (!second.confirmedPickUp || !confirmed)"

Я хочу, чтобы кнопка была отключена:

  1. если second.confirmedPickUp не подтверждено
  2. если confirmed не подтверждено
  3. и тогда только если second.checkoutHasSupplies() значение true, тогда if second.confirmed не подтверждается

Я могу заставить работать числа 1 и 2 в приведенном выше списке, но, похоже, я не могу понять, как выполнить номер 3. Как вы можете видеть в моем коде выше, я пытался (second.checkoutHasSupples() || !second.confirmed) , но это не работает.

Также я уверен, что это понятно, но просто для пояснения, у меня есть second. перед некоторым кодом, потому что я извлекаю данные из другого компонента. Однако строка, которая находится только !confirmed внутри этого компонента, с которым я пытаюсь это сделать.

Я действительно не уверен, как этого добиться. Любые пошаговые руководства будут оценены! Спасибо!

Ответ №1:

Ваше условие должно быть:

 [disabled]="(second.checkoutHasSupplies() amp;amp; !second.confirmed) || !second.confirmedPickUp || !confirmed"
 

Но, может быть, ваша вторая функция.checkoutHasSupplies() возвращает false при монтировании компонента … есть ли в этой функции вызов Ajax?
Вы должны заменить second.checkoutHasSupplies() переменной типа «hasSupplies» и установить для нее значение «true» по умолчанию или false, а затем обновить эту переменную «hasSupplies», когда second.checkoutHasSupplies() возвращает другое значение.

Ответ №2:

Итак, как сказал Бенджамин до меня, вы хотите, чтобы ваше условие было [disabled]="(second.checkoutHasSupplies() amp;amp; !second.confirmed) || !second.confirmedPickUp || !confirmed"

Однако вы должны знать — очень плохая практика иметь вызов функции в HTML с точки зрения производительности — поскольку это то, что нужно будет запускать для переоценки каждый раз.

Если ваша функция чистая, лучшим решением, чем вызов функции, является вызов канала. Если ваша функция нечиста, лучше привязать HTML-код к свойству и вызвать функцию и обновить свойство другим способом, чем привязка непосредственно к вашему HTML