ボタンクリックでonDo()を発生させると、値が変数に購読値を割り当てる:Angular2
{{getData}}
になるコンポーネントがあります。 onDo()はサーバーへのGET要求を開始しています。サーバーが応答を返すと、私はそれを購読しています。購読された値をthis.getDataに割り当てて、{{getData}}を使用してコンポーネントテンプレートに正常に表示できるようにしています。 .subscribe()内のコンソールでデータの印刷を取得することもできます。 しかし、私は.subscribe()の外で印刷しようとしましたが、何も表示されません。
私が実際にやりたいことは、getDataの値をMyVarに割り当てます。
data => this.getData = JSON.stringify(data),
は、データがサーバから到着したときに呼び出されるsubscribe(...)
に渡される関数です
@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;
}
}
[非同期呼び出しからの応答を返すにはどうすればよいですか?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-コール) – echonax