Angular: 订阅后仍未获取到值
Angular: Still not getting the value after subscribe
在我的 ts 文件中我有这个函数:
searchForUser() {
this.userService.getUserByLastName(this.searchString)
.subscribe(
(data: User) => this.searchedUser = data
);
console.log('Firstname: ' + this.searchedUser.firstName);
this.dataService.changeUser(this.searchedUser);
}
在我的 html 文件中,我从 searchedUser 获得了正确的值。在我的 console.log 和 dataService 中没有。为什么?
当我进行第二次搜索时,我从之前的搜索中获取了值。
移动
console.log('Firstname: ' + this.searchedUser.firstName);
this.dataService.changeUser(this.searchedUser);
里面 subscribe
:
searchForUser() {
this.userService.getUserByLastName(this.searchString)
.subscribe((data: User) => {
this.searchedUser = data;
console.log('Firstname: ' + this.searchedUser.firstName);
this.dataService.changeUser(this.searchedUser);
});
}
您也可以在此处查看我的回复: 以获得解释。
这是一个时间问题,将所有需要响应的操作移到订阅回调中,以便访问您需要的值。
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);
});
}
出现此错误是因为您试图在 this.searchedUser
在订阅中定义之前访问它。
在我的 ts 文件中我有这个函数:
searchForUser() {
this.userService.getUserByLastName(this.searchString)
.subscribe(
(data: User) => this.searchedUser = data
);
console.log('Firstname: ' + this.searchedUser.firstName);
this.dataService.changeUser(this.searchedUser);
}
在我的 html 文件中,我从 searchedUser 获得了正确的值。在我的 console.log 和 dataService 中没有。为什么? 当我进行第二次搜索时,我从之前的搜索中获取了值。
移动
console.log('Firstname: ' + this.searchedUser.firstName);
this.dataService.changeUser(this.searchedUser);
里面 subscribe
:
searchForUser() {
this.userService.getUserByLastName(this.searchString)
.subscribe((data: User) => {
this.searchedUser = data;
console.log('Firstname: ' + this.searchedUser.firstName);
this.dataService.changeUser(this.searchedUser);
});
}
您也可以在此处查看我的回复:
这是一个时间问题,将所有需要响应的操作移到订阅回调中,以便访问您需要的值。
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);
});
}
出现此错误是因为您试图在 this.searchedUser
在订阅中定义之前访问它。