Это ПРАВИЛЬНО, потому что ВНЕ блока subscribe
переменные являются ПУСТЫМИ, потому что вы выполняете ASYNC CALL (AJAX), поэтому ваш фрагмент кода ВНЕ, кроме подписки, будет выполняться ДО возвращения запроса. После того, как вызов возвращен (успешно или нет), выполняемый код будет тот, который ВНУТРИ функции .subscribe, поэтому
this.stamm_solvara_jahrService.getAll().subscribe(resp => {
const keys = resp.headers.keys();
this.headers = keys.map(key=> `${key}: ${resp.headers.get(key)}`);
this.stamm_solvara_jahrData = {...resp.body};
console.log('Data inside method');
console.log(this.stamm_solvara_jahrData);
console.log('Header inside method');
console.log(this.headers);
});
P.S. если вы хотите ЗАПИСАТЬ, то в ответе на ошибку установите новую функцию в качестве второго аргумента вашей функции подписки как:
this.stamm_solvara_jahrService.getAll().subscribe(resp => {
const keys = resp.headers.keys();
this.headers = keys.map(key=> `${key}: ${resp.headers.get(key)}`);
this.stamm_solvara_jahrData = {...resp.body};
console.log('Data inside method');
console.log(this.stamm_solvara_jahrData);
console.log('Header inside method');
console.log(this.headers);
},
(error)=>{ // <-- this one func catch the error from server
console.log(error)
});
Надеюсь, это поможет вам !!