console.log("todos loaded." +this.todos)
покажет ответ, потому что он выполняется после того, как наблюдаемое завершено.
console.log(this.todos)
после того, как .subscribe(...)
показывает undefined
, потому что наблюдаемое еще не завершено, то есть строка data => { this.todos = data }
не была выполнена.
Вы правильно сохраняете данные для использования. Если вы обновите свой следующий вызов для подписки, чтобы он выглядел следующим образом, тогда сумма будет выполнена:
// from
data => { this.todos = data }
// to
data => {
this.todos = data;
this.getSum(this.todos);
}
Вот пример stackblitz получения массива todos и сложения userId
значений в переменную sum
с последующим отображением значения.