setRowData不适用于首次调用角度6

时间:2018-12-04 10:04:23

标签: angular ag-grid

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

这是我的代码:

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 }    
    );

你能告诉问题出在哪里吗?

2 个答案:

答案 0 :(得分:0)

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'”。

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

有关Arrow function

的更多信息,请参见链接。
  

被称为粗箭头(因为->是细箭头,而=>是粗箭头),也被称为lambda函数(由于其他语言)。另一个常用功能是粗箭头功能()=>something。粗箭头的动机是:您不需要

     
      
  1. 保留键入功能
  2.   
  3. 从词法上捕捉了这个含义
  4.   
  5. 它从字面上捕获了参数的含义
  6.   

答案 1 :(得分:0)

当我在Angular中进行进一步调查时,我发现这种类型的服务调用是异步的,通常会显示“无法读取属性'setRowData'”,因为数据没有完全加载。我只是这样做:

private loadQuestion() {
    this.Questions = [];
    this.managementService.getQuestions().subscribe(
         _q => {
             _q.forEach(element => {
                 this.Questions.push(element);
             });
             this.gridApi.setRowData(this.Questions);
         },(err){ blah blah }    
);