私のangular2ウェブサイトからCSVファイルをダウンロードします。このために私はjsonファイルからデータを取得します。パラメータdownloadとhrefが設定されたら、クリックをシミュレートしてダウンロードを開始したいと思います。Angular2:イベントターゲットをクリックすると、無限ループが発生します
ただし、このクリックにより無限ループのダウンロードが発生します... この問題を解決して1つのファイルしかダウンロードできないのはなぜですか?
ここに私のcomponent.htmlコード:
<div>
<a class="csv-template" (click)="downloadCSVTemplate($event)">Dowload File</a>
</div>
マイcomponent.tsコード:
downloadCSVTemplate(event) {
let locale = this.navContextSrvc.locale;
this.http
.get('assets/csv/template_'+ locale +'.json')
.subscribe(res => {
event.target.download = 'template_'+ locale +'.csv';
event.target.href = 'data:text/csv;charset=utf-8,'
+ encodeURIComponent(res._body);
event.stopPropagation();
event.target.click(); // causes infinite loop of download
event.preventDefault();
});
}
:これにより は、ダウンロードはここに私のchangements後にコードを
を立ち上げています。クリックするたびに '' downloadCSVTemplate'''を呼び出すと、この関数は '' '' ''を起動します。 –
クリックハンドラを持って自分自身から別のクリックを送ると、どうなるでしょうか?基本的に、終了条件なしで自分自身を呼び出す関数を書いています。それはあなたが排除する必要がある明らかな無限ループです。 –
マークアップに適切な属性を割り当てないのはなぜですか? – Aer0