ANGULAR: управление отображается после выполнения моей функции - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть компонент, который содержит таблицу dx-data-grid. Я хочу установить видимый в FALSE какой-то столбец, но один раз. Проблема в том, что мой элемент управления отображается после выполнения функции в коде:

Моя функция скрытия некоторых столбцов:

for (var i = 0, len = this.listedesdossiers.instance.columnCount(); i < len; i++) 
{
    if (this.Liste_Colonnes_A_Afficher.find(colonne=>
      colonne==this.listedesdossiers.instance.columnOption(i).dataField)==undefined )
    {
      this.listedesdossiers.instance.columnOption(i, "visible", false)  
    }
  }
<dx-data-grid
    #listedesdossiers
    id="grid"
    [dataSource]="Liste_dossiers"
    [columnWidth]="150"
    [showBorders]="true"
    [showColumnLines]="true"
    [showRowLines]="true"
    [rowAlternationEnabled]="true"
    height="100%"
    [allowColumnResizing]="true"
    noDataText="Pas de dossiers"
    (onContentReady)="contentReady()"
     (onInitialized)="Initialized($event)"
    >

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

И если я выберу ngOnInit, экземпляр элемента управления будет (logi c) не определено. Если я выберу событие onContentReady для datagrid, оно выполнит эту функцию много раз и заново установит видимость столбцов. Если я выберу событие onInitialized для datagrid, экземпляр элемента управления (logi c) не определен.

Можете ли вы мне помочь, пожалуйста?

Извините за мой плохой английский sh

1 Ответ

0 голосов
/ 20 апреля 2020

Чтобы вызвать только один ваш метод в ngAfterViewChecked, вы можете использовать логическое значение в качестве флага в вашем файле .ts. Такие как:

if (this.notHidden) {
  this.yourHideFunction();
  this.notHidden = true;
  }
...