#html #angular #typescript
#HTML #angular #typescript
Вопрос:
Я использую свойство [disabled], чтобы решить, следует ли отключать элементы button или нет, в зависимости от того, возвращает array.length 0 или нет.
Это работает нормально после взаимодействия пользователя с компонентом, однако кнопки не отключаются, когда компонент инициализирован, а массив пуст.
typescript
constructor() {
this.macrosSelected = [];
}
HTML
<button
type="button"
class="btn btn-secondary"
[disabled]="!macrosSelected.length"
>
Как я уже сказал, этот код включает кнопку, когда в массиве есть объект внутри него, и отключает ее, как только массив возвращается в пустое состояние.
Комментарии:
1. Я не уверен, устраняет ли это проблему, но я бы посоветовал вам инициализировать ваши данные на
ngOnInit
вместо конструктора2. Вы уверены, что в вашей консоли нет ошибок? возможно,
macrosSelected
естьnull
в начале. Вы могли бы использовать[disabled]="!macrosSelected?.length"
3. @StPaulis Я пробовал это раньше, а также инициализировать массив при объявлении переменной
4. Можете ли вы предоставить общий доступ к stackblitz?
Ответ №1:
Поскольку вы назначили macrosSelected = []
в своем конструкторе, то это будет начальное значение вашей переменной. Если вы назначаете эту переменную с помощью @Input()
декоратора или службы, они обновят эту переменную после того, как вызов конструктора означает второе присвоение. Таким образом, вы можете просто проверить длину macrosSelected
переменной, как показано ниже.
Код вашего шаблона должен быть похож:
<button type="button" class="btn btn-secondary" [disabled]="macrosSelected.length === 0"></button>