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.