javascript - Angular ngStyle Eroare parser: Token neașteptat [, era așteptat un identificator sau un cuvânt-cheie


Trebuie să pot transmite un șir dinamic folosind fieldName pentru a obține un atribut din obiectul item. Pentru a facilita duplicarea problemei, am oferit un mic exemplu. Problema este că această sintaxă funcționează corect cu Angular 12.2.5, așa cum am verificat, dar nu a funcționat cu Angular 12.0.0 sau versiuni anterioare. Pot pur și simplu să apelez o funcție, dar știu că acest lucru nu este bun pentru performanță. Există o modalitate alternativă de a scrie această sintaxă pentru aplicațiile Angular mai vechi?

HTML

<p [style.background]="item?.[fieldName]">
  Some Text
</p>

ts

item =  { warn: 'yellow', success: 'green', error: 'red' };
fieldName = 'success';

Eroarea arată astfel

Parser Error: Unexpected token [, expected identifier or keyword at column 20 in [{background: item?.[fieldName]}]

Răspuns #1

Încearcă să folosești operatorul ternar ?::

<p [style.background]="item[fieldName] ? item[fieldName] : ''">
  Some Text
</p>