typescript - Angular: Får fortfarande inte värdet efter subscribe
I min ts-fil har jag denna funktion:
searchForUser() {
this.userService.getUserByLastName(this.searchString)
.subscribe(
(data: User) => this.searchedUser = data
);
console.log('Firstname: ' + this.searchedUser.firstName);
this.dataService.changeUser(this.searchedUser);
}
I min HTML-fil får jag de korrekta värdena från searchedUser. I min console.log och dataService får jag det inte. Varför? När jag gör en andra sökning får jag värdena från sökningen innan.
Svar #1
Detta är ett tidsproblem, flytta alla åtgärder som kräver ett svar till prenumerationscallbacken för att kunna komma åt det värde du behöver.
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);
});
}
Dessa fel uppstår eftersom du försöker komma åt this.searchedUser innan det har definierats i prenumerationen.
Svar #2
flytta
console.log('Firstname: ' + this.searchedUser.firstName);
this.dataService.changeUser(this.searchedUser);
inuti subscribe:
searchForUser() {
this.userService.getUserByLastName(this.searchString)
.subscribe((data: User) => {
this.searchedUser = data;
console.log('Firstname: ' + this.searchedUser.firstName);
this.dataService.changeUser(this.searchedUser);
});
}
Du kan också kolla mitt svar här: https://stackoverflow.com/a/55726693/6713046 för förklaring.
