Angular2: error si no se comprueba si {{object.field}} existe

Tengo una pregunta sobre verificar si existe algún campo en el objeto. Quiero imprimir todas las categorías que usuario tiene, así que estoy haciendo algo como esto:

    0" *ngFor="#category of user.categories">
  • {{category.name}}

¿La razón? Todos los datos se imprimen CORRECTAMENTE pero recibo un error en la consola web como:

 Cannot read property 'name' of null 

Pero cuando hago algo como:

  
    0" *ngFor="#category of user.categories">
  • {{category.name}}

Entonces todo está bien. ¿Estoy haciendo algo mal o tal vez tengo que revisar esto cada vez? ¿Alguna vez has tenido un problema como este? Gracias por adelantado.

uso básico

Use el operador de navegación segura

 {{category?.name}} 

entonces el name solo se lee cuando la category no es null .

formación

Esto solo funciona para el . (desreferencia) operador. Para una matriz que puedes usar

 {{records && records[0]}} 

Véase también Angular 2 – No se puede leer la propiedad ‘0’ de error indefinido con el contexto CONTEXTO DE ERROR: [object Object]

tubo asincrónico

Con el tubo async se puede usar como

 {{(chapters | async)?.length 

ngModel

Con ngModel actualmente necesita ser dividido en

 [ngModel]="details?.firstname" (ngModelChange)="details.firstname = $event" 

Ver también Los datos no se agregan a la plantilla en angular2

*ngIf

Una alternativa es siempre envolver la parte de la vista con *ngIf="data" para evitar que la parte sea procesada antes de que los data estén disponibles para evitar el error de desreferencia.