我在组件中调用服务时遇到了麻烦,因此数据变为空。这是一个例子:
服务方法:
getOneUser() {
return this._http.get(globals.serverIp + '/user/getOneUser/' + this._ls.getCurrentUserName(), { headers: this.headers})
.map((response: Response) => <UserParser> response.json());
}
组件中的方法:
updateParametre(message: string){
let currentUser = new User();
this._us.getOneUser().subscribe(
data =>currentUser = data.data,
error => console.log('error from updateParam ParamtereComponenet ' + error),
() => console.log(currentUser)
);
let anotherinstance : User = currentuser ;
console.log(currentUser);
}
尝试在subscribe方法中控制currentUser:
{id: 9,
initials: "YCI",
nom: "CHABLI",
prenom: "Yassin",
password: "$2a$10$iWVnXs/2TwOk7CBr5RuQ.e/1c/BTlxsvkjHyYrtOgKUiRMll2EupO"}
但是对象anotherintance为null,并且还试图将readUser中的currentUser控制为null ..
请问是什么问题?
答案 0 :(得分:0)
anotherInstance
的范围是该函数。您需要在该范围之外声明它以引用它。
subscribe
方法是异步的。您将anotherInstance
设置为currentUser
,但那时currentUser
只是new User()
;然后,当函数完成时,它将被定义。
适当地调整变量的范围,并在实际拥有数据时设置它们的值:
anotherInstance: User;
updateParametre(message: string){
let currentUser = new User();
this._us.getOneUser().subscribe(
(data) => {
currentUser = data.data,
this.anotherInstance = currentUser
}
(error) => console.log(`error from updateParam ParamtereComponenet: ${error}`),
() => console.log(currentUser)
);
}
然后anotherInstance
将成为您班级的属性,并且可以在updateParameter
方法之外访问。