L'opérateur de navigation sûr ( ?. ) Et les chemins de propriétés nuls
L' opérateur de navigation angulaire (
?.
) est un moyen pratique et fluide de se prémunir contre les valeurs nulles et non définies dans les chemins de propriété.
La protection contre une vue rend l'échec si
currentHero
est
null
.
Que se passe-t-il lorsque la propriété
title
liée aux données suivante est
null
?
La vue est toujours restituée mais la valeur affichée est vide.
Vous voyez seulement "The title is" avec rien après.
C'est un comportement raisonnable.
Au moins, l'application ne plante pas.
Supposons que l'expression du modèle implique un chemin de propriété,
comme dans l'exemple suivant qui affiche le
name
d'un
nullHero
.
JavaScript génère une erreur de référence
null
, ainsi que Angular :
Pire encore, la vue entière disparaît.
Ce serait un comportement raisonnable si la propriété
hero
ne pouvait jamais être
null
.
Si elle ne doit jamais être
null
et pourtant, elle est
null
, c'est une erreur de programmation qui doit être détectée et corrigée.
Lancer une exception est la bonne chose à faire.
D'autre part, les valeurs
null
dans le chemin de la propriété peuvent être correctes de temps en temps,
en particulier lorsque les données sont maintenant
null
et arriveront éventuellement.
En attendant les données, la vue doit être générée sans réclamation et le chemin de la propriété
null
doit être affiché aussi vierge que la propriété
title
.
Malheureusement, l'application se bloque lorsque le
currentHero
est
null
.
Vous pouvez coder ce problème avec
*ngIf
.
Vous pouvez essayer de chaîner des parties du chemin de la propriété avec
&&
,
en sachant que l'expression échoue lorsqu'elle rencontre la première valeur
null
.
Ces approches ont du mérite mais peuvent être lourdes, surtout si le chemin de la propriété est long.
Imaginez que vous vous protégiez contre un
null
quelque part dans un chemin de propriété long tel que a.b.c.d.
L'opérateur de navigation Angular (
?.
) est un moyen plus fluide et plus pratique de se prémunir contre les valeurs
null
dans les chemins de propriété. L'expression échoue lorsqu'elle atteint la première valeur
null
.
L'affichage est vide, mais l'application continue à fonctionner sans erreur.