Как получить ссылку на ясность сетки данных из машинописи

Это может быть более сложным вопросом, но я пытаюсь изменить размер сетки данных ясности после загрузки данных (и динамического отображения / скрытия столбцов), но я продолжаю получать сообщение об ошибке

Uncaught TypeError: Невозможно прочитать свойство 'resize' из неопределенного

component.html

<clr-datagrid #contactsGrid>
[...]
</clr-datagrid>

component.ts

import { Component, OnInit, ViewChild } from '@angular/core';
import { Datagrid } from "clarity-angular";

export class GridComponent implements OnInit {
    @ViewChild('contactsGrid') datagrid: Datagrid;
    //@ViewChild('Datagrid') datagrid: Datagrid; //This doesn't work either

    constructor( ) { }

    ngOnInit() {
        [...]
        this.datagrid.resize(); //this.datagrid is undefined
    }
}

1 ответ

Решение

Похоже, ваш пример кода выше верен, возможно, что-то еще происходит? У вас есть более полный пример, который демонстрирует актуальную проблему?

Здесь вы можете увидеть демонстрацию получения ссылки на сетку данных. https://stackblitz.com/edit/clarity-datagrid-brfwx9?file=app/launches/launches.component.ts

Шаблон имеет:

<clr-datagrid [(clrDgSelected)]="selected" #datagridRef>

Тогда контроллер имеет:

export class LaunchesComponent  {
  @ViewChild('datagridRef') datagrid: Datagrid;

  ngOnInit() {
    console.log(this.datagrid); // Defined
  }

Если у вас есть только один Datagrid, вам не нужно добавлять хук в HTML

export class LaunchesComponent  {
  @ViewChild(Datagrid) datagrid: Datagrid;

  ngOnInit() {
    console.log(this.datagrid); // Defined
  }

Похоже, ваш код проходил 'Datagrid' (строка) вместо Datagrid(ссылка на конструктор)

Другие вопросы по тегам