typescript - Angular: Abonelikten sonra hâlâ değeri alamıyorum
TS dosyamda bu fonksiyon var:
searchForUser() {
this.userService.getUserByLastName(this.searchString)
.subscribe(
(data: User) => this.searchedUser = data
);
console.log('Firstname: ' + this.searchedUser.firstName);
this.dataService.changeUser(this.searchedUser);
}
Html dosyamda searchedUser'dan doğru değerleri alıyorum. Ancak console.log ve dataService'de almıyorum. Neden? İkinci bir arama yaptığımda önceki aramadan değerleri alıyorum.
Cevap #1
Bu bir zamanlama sorunu, ihtiyacınız olan değere erişmek için yanıt gerektiren tüm işlemleri abonelik geri çağrısına taşıyın.
public searchForUser(): void
{
this.userService.getUserByLastName(this.searchString).subscribe((data: User) =>
{
this.searchedUser = data;
console.log('Firstname: ' + this.searchedUser.firstName);
this.dataService.changeUser(this.searchedUser);
});
}
Bu hatalar, abonelikte tanımlanmadan önce this.searchedUser'a erişmeye çalıştığınız için meydana geliyor.
Cevap #2
hareket etmek
console.log('Firstname: ' + this.searchedUser.firstName);
this.dataService.changeUser(this.searchedUser);
subscribe içinde:
searchForUser() {
this.userService.getUserByLastName(this.searchString)
.subscribe((data: User) => {
this.searchedUser = data;
console.log('Firstname: ' + this.searchedUser.firstName);
this.dataService.changeUser(this.searchedUser);
});
}
Ayrıca açıklama için cevabımı burada da kontrol edebilirsiniz: https://stackoverflow.com/a/55726693/6713046.
