首页 > 解决方案 > setRowData 在第一次调用 Angular 6 时不起作用

问题描述

我有一个带有用于更改每行数据的按钮的 ag-grid。当我单击按钮时,它应该在引导模式中显示另一个 ag-grid;但问题是当网格第一次加载时,它没有显示任何数据,因为它说“No Rows To Show”。当我第二次单击时,它会显示网格数据。

这是我的代码:

OnGridReady(params){
      this.gridApi = params.api;
      this.loadQuestions();
      this.gridApi.setRowData(this.Questions);
     }

如您想了解更多loadQuestion()

private loadQuestion(){
    this.managementService.getQuestions().subscribe(
        (_q: Question[]) => {
             this.Questions = _q;
        },(err){ blah blah }    
    );

你能说出问题出在哪里吗?

标签: angularag-grid

解决方案


setRowData在你的loadQuestion.

private loadQuestion(): void => {
   this.managementService.getQuestions().subscribe(
      (_q: Question[]) => {
         this.Questions = _q;
          this.gridApi.setRowData(this.Questions);
      },(err){ blah blah }    
);

我认为你遇到的问题是由于你这样做的时候setRowData,数据this.Questions不可用。

下次加载时,它会在那里。


更新

当您根据问题中的内容定义函数时,您可能会遇到以下错误。

“无法读取未定义的属性‘setRowData’”。

根据此答案中显示的代码,您可以使用箭头函数来获取函数内部可用的外部范围。

有关箭头功能的更多详细信息,请参阅链接

亲切地称为胖箭头(因为->是细箭头,又=>是胖箭头),也称为 lambda 函数(因为其他语言)。另一个常用的功能是粗箭头功能()=>something。粗箭头的动机是:你不需要

  1. 保持打字功能
  2. 它在词汇上捕捉到了这个的意思
  3. 它在词法上捕获参数的含义

推荐阅读