Потому что метод userApiService.login возвращает наблюдаемый объект.
Что является наблюдаемым?
Наблюдаемым является:
Наблюдаемые обеспечивают поддержку передачи сообщений между издателями и подписчиками в вашем приложении. Observables предлагают значительные преимущества по сравнению с другими методами обработки событий, асинхронного программирования и обработки нескольких значений. Для получения дополнительной информации, пожалуйста, перейдите по этой ссылке: Angular Observables
в двух словах: тип возврата userApiService.login является наблюдаемым, поэтому он работает асинхронно c, поэтому ваш код не правильно работает. Пожалуйста, под частью кода переместите подписку внутрь.
console.log(this.user_id)
this.router.navigateByUrl('/dashboard/'+this.user_id)
Например:
login(user){
this.userApiService.login({'username': this.user.username, 'password': this.user.password}).subscribe( resp => {
let response = resp;
this.user_id = response.user_id
console.log(this.user_id)
//it is correct
console.log(this.user_id)
this.router.navigateByUrl('/dashboard/'+this.user_id)
});
}