Все кажется правильным.Ваш метод 'getUserdata' возвращает Observable, что означает, что вы получите ваше значение только тогда, когда оно получит это новое значение после времени X. Вот почему ваша вторая печать возвращает undefined -> 'getUserdata' не вернула Observable.
Если вы хотите изменить / работать с данными, которые возвращаются, то вы должны делать все, когда данные возвращаются (в подписке).
Если вы хотите использовать его в html, не стесняйтесьназначать их в блоке .subscription () и использовать в html, но в течение короткого промежутка времени (если не произойдет сбой / отстает) вы их не увидите / не будете использовать (они будут неопределенными, потому что вы все еще ждете данных длябыть доставленным)
как использовать:
ngOnInit() {
this.serveicService.getUserdata('1').subscribe(res => {
this.title = res.title;
console.log(this.title); // prints value
// here we have our data and we can start work with it
});
console.log(this.title); // prints undefined (can't work with it, because it's async, you don't have value here)
}