gpt4 book ai didi

angular - 从组件 Angular 监听服务变量变化

转载 作者:行者123 更新时间:2023-12-04 16:36:58 27 4
gpt4 key购买 nike

我有变量服务和将数​​据带入该变量的方法

export class UserService {
userDetails;
getUserProfile(){
return this.http.get(this.BaseURI+'/UserProfile').subscribe(
res=>{
this.userDetails=res;
// console.log(res);
},
err=>{
console.log(err);
}
);
}

现在我想在变量更改时从组件中检查并读取它。我该怎么做?

更新。

export class UserService {
userDetails;

getUserProfile(){
this.http.get(this.BaseURI+'/UserProfile').subscribe(
res=>{
this.userDetails=res;
},
err=>{
console.log(err);
}
)
}

在组件中我有这个:

  ngOnInit() {
this.service.userDetails.subscribe((userDetails) =>this.userDetails=userDetails)
}

现在当我运行应用程序时,组件中出现错误:

AppComponent.html:2 ERROR TypeError: Cannot read property 'subscribe' of undefined

最佳答案

相信你的get请求完成后,你基本上需要组件中的数据了。

解决方案 1:考虑将 userDetails 设为 Observable,.这样你就可以在其中的值发生变化时收听它

export class UserService {

private _userDetails: Subject<any> = new Subject<any>(); // consider putting the actual type of the data you will receive
public userDetailsObs = this._userDetails.asObservable();
getUserProfile(){
return this.http.get(this.BaseURI+'/UserProfile').subscribe(
res=>{
this._userDetails.next(res)
// console.log(res);
},
err=>{
console.log(err);
}
);
}
}

在您的组件内部

constructor(private _userService: UserService) {}

ngOnInit() {
this._userService.userDetailsObs.subscribe((userDetails) => {
console.log(userDetails)
})
}

解决方案 2. 考虑只返回 HTTP observable 本身。

getUserProfile(){
return this.http.get(this.BaseURI+'/UserProfile');
}

在您的组件内部

constructor(private _userService: UserService) {}

ngOnInit() {
this._userService.getUserProfile.subscribe((userDetails) => {
console.log(userDetails)
})
}

关于angular - 从组件 Angular 监听服务变量变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55259419/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com