无法动态地将数据添加到 ag-grid

unable to add data to ag-grid dynamically

我正在尝试填充 ag-grid 的行 dynamically.The 仅当我发送文件进行验证并且存在一些错误时,才必须显示网格。下面是我的代码:

columnDefs = [
    {headerName: 'S.No.', field : 'SNo'},
    {headerName: 'Error Description', field: 'Error_Description'},
    {headerName: 'Suggestion', field: 'Suggestion'}
  ];

rowData = [
    // {SNo :1, Error_Description:"Error 1", Suggestion: 'Suggestion 1'},
    // {SNo :2, Error_Description:"Error 2", Suggestion: 'Suggestion 2'},
    // {SNo :3, Error_Description:"Error 3", Suggestion: 'Suggestion 3'},
    // {SNo :4, Error_Description:"Error 4", Suggestion: 'Suggestion 4'}
  ];

index.html

<ag-grid-angular [hidden]="isValid" class="ag-theme-balham" style="width: fit-content" [rowData]="rowData" [columnDefs]="columnDefs">
        <!-- Show table -->
      </ag-grid-angular>

网格行的动态填充

for(var i=0;i<this.errorMsgs.length;i++){
        let errorObj={};
        errorObj["SNo"]=i+1;
        errorObj["Error_Description"]=this.errorMsgs[i];
        errorObj["Suggestion"]="Put Some Suggestion"
        this.rowData.push(errorObj);
      }

当我使用硬编码值(注释值)时,我得到了预期的输出。但是,当我尝试动态填充网格时,不会显示数据。数据被推入 rowData 但由于某种原因,它没有显示在 table 中。我究竟做错了什么? 如果这是一个愚蠢的问题,请提前致谢并道歉,因为这是我第一次使用 ag-grid

这可能是 Angular 的变更检测给您带来麻烦。当你 push 到一个数组时,数组的内容会改变,但 Angular 可能不会选择它,因为它通常取决于对 reference 的更改而不是.

替换:

this.rowData.push(errorObj);

this.rowData = [...this.rowData, errorObj];

这将 "add" 新的 errorObjrowData 通过本质上创建一个新数组并重新分配新数组的 referencerowData。它依赖于 spread syntax. I also recommend reading more about Angular Change Detection.

使用 gridApi 的 setRowData() 向网格添加值。 最好在 onGridReady 方法中使用它。