Dynamic change headerName ag-grid Angular 2?

Viewed 12454

I have this code:

public fy: string = "17";
let months = ['July', 'August', 'September', 'October', 'November', 'December', 'January', 'February', 'March', 'April', 'May', 'June',];

        function headerCellRendererFunc(year, params) {
            const eHeader = document.createElement('span');
            eHeader.innerText = `${params.colDef.headerName} ${year}`;
            return eHeader;
        }

        const januaryIndex = months.indexOf('January');
        months.map((month, index, arr) => {
            const year = januaryIndex === 0 || index > januaryIndex ? this.fy : this.fy + 1;

            return <ColDef>{
                headerName: month,
                headerCellRenderer: headerCellRendererFunc.bind(null, year),
                field: `data.${month}`,
                editable: isEditable,
                valueGetter: cellMonthValueGetter(month, index),
                cellFormatter: cellMonthValueFormatter,
                newValueHandler: cellMonthNewValueHandler(month),
                width: 100,
            };
        }).forEach((colDef) => colDefs.push(colDef));

and this function:

refresh(): void {
    let jobId = +this.route.snapshot.parent.params['id'];
    this.jobService.getJob(jobId).then(result => {
        this.job = result.Object;
        this.fy = result.Object.FinancialYearName;
        this.jobService.getTimePhasing(jobId).then(result => {
            this.setModel(result.Object);
        });
    });
}

As you can see, the FY mod will change after the request. How do I change it in columns? I tried again to call the grid rendering function, (this.gridOptions.api.refreshView ();) but that did not help me.

3 Answers

I can do this by getting the current column def and changing the header name

this.baseGrid.gridOptions.api.getColumnDef("clan").headerName = "WOW";

and then calling refreshHeader

this.baseGrid.gridOptions.api.refreshHeader();

perhaps try the refresh first and then see if you need to access the columnDf directly... Hope this helps.

unfortunately, it appears that you cannot refresh the header text of an autocolumn using the same technique.

Related