Это происходит потому, что геттеры в Angular переоцениваются каждый раз, когда происходит обнаружение изменений.Поскольку allUsers
заполняется асинхронно, есть время, когда оно не определено.Вот почему вы получаете эту ошибку.
Одним из возможных решений является инициализация allUsers
как пустого массива, чтобы он никогда не был неопределенным.
this.allUsers = [];
Имейте в виду, что этот код будет работатькаждый раз, когда происходит обнаружение изменений:
return this.allUsers.map((user, i) => ({ id: i + 1, ...user
})).slice((this.page - 1) * this.pageSize, (this.page - 1) * this.pageSize
+ this.pageSize);
}
Вам действительно нужно, чтобы он работал таким образом?Выполнение сопоставления каждый раз, когда происходит обнаружение изменений.Если нет, вы можете оптимизировать его, не используя метод получения для users
, а вместо этого создать глобальную переменную users
(как вы это сделали для allUsers
) и выполнить сопоставление внутри обратного вызова this.userService.getUsers()
.