在 ag-grid 中,rowData 的数据变化不会触发单元格组件中的 ngIf。解决此问题的方法是,使用 Angular 的变更检测器来手动检测数据变化并更新组件。
首先,导入 ChangeDetectorRef:
import { Component, ChangeDetectorRef } from '@angular/core';
然后,注入 ChangeDetectorRef 服务,并在 rowData 发生变化时手动调用 detectChanges() 方法:
constructor(private changeDetector: ChangeDetectorRef) {
// ...
}
onRowDataChanged() {
this.changeDetector.detectChanges();
}
在 onRowDataChanged() 方法中,手动调用 detectChanges() 方法来更新单元格组件内的 ngIf。
完整示例代码:
import { Component, ChangeDetectorRef } from '@angular/core';
@Component({
selector: 'app-my-grid',
template: `
`,
})
export class MyGridComponent {
rowData = [
{ name: 'John', age: 30 },
{ name: 'Sarah', age: 25 },
{ name: 'Bob', age: 40 },
];
columnDefs = [
{ headerName: 'Name', field: 'name' },
{ headerName: 'Age', field: 'age' }
];
constructor(private changeDetector: ChangeDetectorRef) {
// ...
}
cellRenderer = ({ value }) => {
return `
{{ value }}
`;
};
onRowDataChanged() {
this.changeDetector.detectChanges();
}
}