我正在尝试在发出HttpClient post请求后从Angular 4服务中获取数据,我可以看到数据在订阅方法中返回,但我无法将其传递给方法中的其他变量;下面是我调用服务的组件的代码:
=========服务方法==============
autheticateUser(name: string, pass: string)
{ const info: any = {};
info.userName = name;
info.password = pass;
return this._http.post<Itoken>(this.url, info)
.shareReplay()
.do((data)=> {this.jwtToken = data;});
}
=============调用此服务的组件==========
login() {
this.flag = true;
this.mode= 'indeterminate';
this.authuser.autheticateUser(this.user.userName,this.user.password)
.subscribe((data)=> {this.localtoken = data;});
console.log(this.localtoken); // No value this.localtoken variable
答案 0 :(得分:0)
.subscribe()是异步的。因此,您不知道何时会触发它,如果您在subscribe()之外执行结果(例如您的console.log()),则可能尚未定义此结果。
正如@TheUnreal所说,将你的日志移到订阅中。这就是你想要使用它的方式:)
答案 1 :(得分:0)
在订阅中移动您的日志。例如这样的代码。
userResumeBio:any = [];
this.userresumeservice.getResume().subscribe((res: Response) => {
console.log(res , 'User resume response');
this.userResumeBio = res;
console.log(this.userResumeBio , 'UserService userResumeBio response');
}, err=>console.log(err))