I have this code:
showInforme(){
this.buscadorService.getInforme()
.subscribe((data: InformesCounter) => {
const { data: myData, included: myIncluded } = data;
myData.forEach((item: any) => {
const myFid = myIncluded.find((element: any) => element.attributes.drupal_internal__fid === item.relationships.informe.data.meta.drupal_internal__target_id)
item.relationships.informe.data.meta.uri = myFid.attributes.uri;
});
// console.log(myData);
this.infoFile = myData.map((data: { relationships: any;}) => data.relationships);
// console.log(this.infoFile);
})
}
But when drupal_internal__target_id is not found or does not exist i receive this error in console:
ERROR TypeError: Cannot read properties of null (reading 'meta')
I need a way to skip each item who don't have this property. I don't know yet how can i do this. Thanks
CodePudding user response:
You cna do this:
const myFid = myIncluded.find((element: any) => element.attributes.drupal_internal__fid === item.relationships.informe.data?.meta.drupal_internal__target_id)
Add ? because item.relationships.informe.data is null. In this way the error is escaped.
CodePudding user response:
You can use Optional Chaining to prevent the error.
Add the optional chaining operator ?.
when you expect a null
or undefined
value and need to access a property. Example: item.relationships.informe.data?.meta?.drupal_internal__target_id
and it will return null
. Pay attention to the ?.
Operator after the data
and meta
property.
More information about Optional Chaining can be found in the What's new in TypeScript 3.7 article.