Dav*_*vid 2 variables service components angular
我有将数据带到该变量的变量和方法的服务
export class UserService {
userDetails;
getUserProfile(){
return this.http.get(this.BaseURI+'/UserProfile').subscribe(
res=>{
this.userDetails=res;
// console.log(res);
},
err=>{
console.log(err);
}
);
}
Run Code Online (Sandbox Code Playgroud)
现在我想在变量更改时从组件中检查并读取它。我怎样才能做到这一点 ?
更新。
export class UserService {
userDetails;
getUserProfile(){
this.http.get(this.BaseURI+'/UserProfile').subscribe(
res=>{
this.userDetails=res;
},
err=>{
console.log(err);
}
)
}
Run Code Online (Sandbox Code Playgroud)
在组件中,我有这个:
ngOnInit() {
this.service.userDetails.subscribe((userDetails) =>this.userDetails=userDetails)
}
Run Code Online (Sandbox Code Playgroud)
现在,当我运行该应用程序时,组件出现错误:
AppComponent.html:2 错误类型错误:无法读取未定义的属性“订阅”
我相信当您的 get 请求完成时,您基本上需要组件中的数据。
解决方案 1:考虑将userDetailsmake 作为 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);
}
);
}
}
Run Code Online (Sandbox Code Playgroud)
在您的组件内部
constructor(private _userService: UserService) {}
ngOnInit() {
this._userService.userDetailsObs.subscribe((userDetails) => {
console.log(userDetails)
})
}
Run Code Online (Sandbox Code Playgroud)
解决方案 2. 考虑只返回 HTTP observable 本身。
getUserProfile(){
return this.http.get(this.BaseURI+'/UserProfile');
}
Run Code Online (Sandbox Code Playgroud)
在您的组件内部
constructor(private _userService: UserService) {}
ngOnInit() {
this._userService.getUserProfile.subscribe((userDetails) => {
console.log(userDetails)
})
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11252 次 |
| 最近记录: |