Кажется, проблема в том, что this.values
устанавливается не во всех ситуациях. Поэтому, когда вы смотрите на свой код, когда вы инициализируете this.values
?
, я бы предположил, что он в настоящее время заполняется асинхронно (это означает, что родитель не может предоставить значение во время создания). В результате при создании компонента первый рендеринг произойдет до заполнения this.values
. Затем, через несколько миллисекунд, значение присваивается.
Из-за этого второе решение работает, а первое - нет. В первом он взрывается, потому что при первом рендеринге значение недоступно.
Для этого у вас есть несколько способов решения проблемы. Вы можете попытаться бороться с симптомом и проверить, доступно ли необходимое значение, а если нет, вернуть приемлемое значение
checkForStatus() {
if(!this.values){
return false;
}
this.values.signers.forEach((ele)=>{
...................
return ....something.
}
Или вы можете проанализировать источник проблемы и проверить, является ли асинхронный характер необходимо.
Например, родитель может добавить дочерний компонент в DOM только при наличии каждого значения.
<childComponent [values]="this.values" *ngIf="this.values"></childComponent>
Решение очень зависит от того, чего вы хотите достичь и как внешний вид должен быть.