¿Por qué utilizamos el operador “?” En el enlace de plantilla en angular 2

Solo quiero saber sobre usar el “?” operador en la plantilla vinculante en angular 2.

Como en mi proyecto cuando uso? el enlace funciona bien, pero si lo elimina, no muestra nada en la vista.

{{project?.category}} 

¿Puede decirme la diferencia, es una buena práctica usarla de esta manera o mal?

Gracias

Cuando Angular representa la vista antes de que el project tenga un valor asignado, causa una excepción. ?. deja de evaluar cuando el project es null o undefined , lo que generalmente ocurre cuando los datos se obtienen de manera sincronizada, por ejemplo desde el servidor, lo que puede llevar bastante tiempo.

La próxima vez que la detección de cambios reconozca un cambio, los enlaces serán reevaluados. Cuando project tiene un valor, enlazará project.category .

? es el operador de navegación segura Comprueba si la variable es null o undefined modo que nuestra plantilla no intentará seleccionar una propiedad de algo falso.

Más información: https://angular.io/guide/template-syntax#the-safe-navigation-operator—-and-null-property-paths