Как уже упоминалось в комментариях, оператор нулевого утверждения .... Оператор сообщает компилятору, что это значение определенно будет иметь значение во время выполнения , поэтому во время выполнения возникнет ошибка.
Итак, ошибка ....
TypeError: Невозможно прочитать свойство 'id' из неопределенного
, очевидно, тогда ...
this.authenticationProvider.member.projects[0]
это undefined
. Это нормально, он проходит, если у вас есть, так как вы не проверяете длину массива:
if (this.authenticationProvider.member.projects != null)
Итак, ваш код проходит, если projects
равно []
Iбудет просто делать if (this.authenticationProvider.member.projects)
, он включает проверку, если он вообще существует, охватывающий null
, undefined
, false
в целом. Затем, после этого, проверьте, действительно ли в массиве есть объект, поэтому ваш оператор if
может выглядеть следующим образом:
if (this.authenticationProvider.member.projects && this.authenticationProvider.member.projects.length)
, если вы не уверены, что существует даже member
, вам следуетсделать дополнительную проверку для этого ...
if (this.authenticationProvider.member &&
this.authenticationProvider.member.projects &&
this.authenticationProvider.member.projects.length)