ngx-datatable, снимающий флажок элемент отображается после того, как элемент не виден

#angular #angular10 #ngx-datatable

#angular #angular10 #ngx-datatable

Вопрос:

То, что я пытаюсь сделать, это назначить предельное количество отмеченных элементов, которые я могу иметь на своем ngx-datatable

ant это код, который я использую:

 onSelect({ selected, event }) {
    if (this.checkboxLimit <= 0 ) { //THIS IS WORKING FINE
      this.selected.splice(0, this.selected.length);
      this.selected.push(...selected);
      this.checkedItems = selected;
      this.numberOfSelectedCheckboxes.emit(this.checkedItems.length);
      return;
    }

    if (selected.length === 0 ) {  //THIS IS WORKING FINE
      this.selected = [];
      this.checkedItems = [];
      this.lastSelection = [];
      this.numberOfSelectedCheckboxes.emit(0);
      return;
    } else if (selected.length === 1 ) { //THIS IS WORKING FINE
      this.selected = [...selected];
      this.checkedItems = [...selected];
      this.lastSelection = [...selected];
      this.numberOfSelectedCheckboxes.emit(1);
      return;
    } if(selected.length === this.checkboxLimit   1) {  //THIS IS NOT WORKING!
      this.checkedItems = [...this.lastSelection];
      this.selected = [...this.lastSelection];
      this.tableOffset = 0;

      console.log('Uncheck the element!!!!');
      return;
    } else {  //THIS IS WORKING FINE
        if(selected.length > this.checkboxLimit) {
          this.selected = [...this.items.splice(0, this.checkboxLimit)];
          this.checkedItems = [...this.selected];
          this.lastSelection = [...this.selected];
          
          this.numberOfSelectedCheckboxes.emit(this.checkedItems.length);
          return
        }
        this.selected = [...selected];
        this.lastSelection = [...selected];
        this.checkedItems = [...selected];
        this.numberOfSelectedCheckboxes.emit(this.checkedItems.length);
    }    
  }
 

Ну, если я нажму на select all, он выберет все нужные мне элементы, также я использую переменную, чтобы узнать, какие флажки были установлены ранее.

Ну, моя проблема после выполнения этой строки: this.selected = [...this.lastSelection]; переменная this.selected присваивается нужному количеству элементов. Но в таблице в моем браузере все еще установлен флажок. НО, если я прокручиваю вверх или прокручиваю вниз, пока флажок не станет невидимым, и я пытаюсь вернуться к нему, флажок снят.

По какой-то причине он ожидает отображения. У кого-нибудь есть решение для этого? Кроме того, я пытаюсь выполнить this.tableOffset = 0; (но не работает) попытку отправить таблицу наверх, только попробуйте отобразить ее снова, но мне действительно не нужен этот фрагмент кода.

Ответ №1:

Я не нашел хорошего решения, моей единственной альтернативой было использование элемента управления оповещением, и как только пользователь нажимает ok внутри моего оповещения, я запускаю метод:

 this.checkedItems = [...this.lastSelection];
this.selected = [...this.lastSelection];
 

Я знаю, что это не имеет никакого смысла, но это сработало.
Я думаю, это происходит потому, что это задерживает обновление переменной.