angular - În ag-grid, cum să obții numele de antet dinamic?
Folosesc ag-grid cu Angular. Vreau ca unul dintre numele coloanelor să fie dinamic. Așadar, în obiectul colDefs pentru acea coloană nu definesc headerName, ci definesc un headerValueGetter.
headerValueGetter: this.partnerHeaderValueGetter
'
partnerHeaderValueGetter(params) {
return 'Select Partner';
}
Nu am vrut să fie așa. Există două butoane radio, valoarea antetului dinamic va depinde de care dintre butoanele radio este selectat. Dar parametrul pentru funcția partnerHeaderValueGetter este params care are gridApi, columnApi etc. Cum să fac această funcție să fie conștientă de butonul radio care nu face parte din ag-grid? Codul pe care voiam să-l fac să funcționeze este următorul:
partnerHeaderValueGetter(params) {
if (this.selectedSurveyLevel == 'Partner'){
return 'Select Partners';
}
else if (this.selectedSurveyLevel == 'Site'){
return 'Select Sites';
}
return 'Select Partners';
}
Dar funcția partnerHeaderValueGetter nu poate accesa 'this', este nedefinit.
Răspuns #1
Încearcă să folosești în schimb o funcție săgeată. Este posibil să faci referire la this greșit.
Dacă folosești funcția ES5 (ca în întrebarea ta),
thisva fi legat de contextul apelantului.Dacă folosești funcția săgeată,
thisva fi legat de codul care conține funcția săgeată.
partnerHeaderValueGetter = (params) => {
if (this.selectedSurveyLevel == 'Partner'){
return 'Select Partners';
}
else if (this.selectedSurveyLevel == 'Site'){
return 'Select Sites';
}
return 'Select Partners';
}
Răspunsul #2
O modalitate simplă este să folosești funcția săgeată în locul funcțiilor normale:
someValueInComponent: string;
columnDef = [
{
headerValueGetter: (params) => this.someValueInComponent + ' some logic',
}
];
