将订阅值分配给变量:Angular2
如果我通过单击按钮触发onDo(),我有一个组件显示的值为将订阅值分配给变量:Angular2
{{getData}}
。 onDo()正在向服务器发起GET请求。服务器回馈的反应,我订阅了。我将订阅值分配给this.getData,并能够使用{{getData}}在我的组件模板中成功显示它。 我还可以在控制台内的.subscribe()中打印数据。 但我想打印的.subscribe()之外,它不显示任何内容。
我真正想要做的是:分配的getData的价值MYVAR。 这里是我的代码:
@Component({
template: `
...
<p>{{getData}}</p>
...
`,
providers: [MyService]
})
export class MyComponent{
getData: string;
MyVar: string;
constructor(private _myService: MyService, private _router: Router){}
onDo(){
this._myService.getSomething()
.subscribe(
data => this.getData = JSON.stringify(data),
error => this._router.navigate(['error']),
() => console.log('Get data inside subscribe: '+ this.getData)
);
console.log('Get data outside subscribe'+this.getData);
this.MyVar = this.getData;
}
}
此代码
data => this.getData = JSON.stringify(data),
是传递到subscribe(...)
一种功能,当数据从服务器到达时被调用。
您上面的函数传递给subscribe
后立即调用您的console.log(...)
,但这并不意味着数据已经存在。
只是移动代码中subscribe(...)
如预期它会奏效。
该订阅仅支持三个参数。这里是数据=>,错误=>,()=>的胖箭头,我将其中的每一个用于别的东西。现在,在哪里,我应该如何表达:“this.MyVar = this.getData;” ? –
添加'{}''像数据=> {this.getData = JSON.stringify(数据); otherStatementsHere; }',那么你可以根据需要添加尽可能多的代码。 –
的可能的复制[如何返回从一个异步调用的响应?](http://*.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-呼叫) – echonax