javascript - Angular2 korištenje Elvis operatora na ključu objekta s kosom crtom
Imao sam problema s parsiranjem, što se rješava Elvis operatorom, ali ako imam ključ koji sadrži kosa crta, ne mogu koristiti Elvis operator jer taj ključ moram staviti u uglate zagrade.
Radi ako je ključ jednostavan poput ovog ("firstname")
{{ data?.record?.firstname }}
Ne radi ako ključ ima naprijedne zagrade poput ovih ("name/first")
{{ data?.record?['name/first']}}
Čini se da Elvis nije dostupan ako koristim uglate zagrade.
Ima li kakvog zaobilaznog rješenja? Možda način za escape-anje kosa crta u . notaciji ovako:
{{ data?.record?.name\\/first }}
Odgovor #1
Elvis operator je dostupan samo za ., a ne za druge operatore dereferenciranja poput [].
Kao privremeno rješenje koristi
{{ data?.record ? data.record['name/first'] : null}}
Odgovor #2
Zapravo, možete koristiti i ? i [] istovremeno:
Sintaksa
obj?.prop
obj?.[expr]
arr?.[index]
func?.(args)
U vašem slučaju, to bi trebalo biti:
{{ data?.record?.['name/first']}}
I još uvijek radi ako je to niz, ovako:
attributes['bar/foo']?.[0]
Vrlo korisno... :-)
izvor: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining
