私はAngular2/4でページのレンダリング時にファイルをチェックし、ファイルが存在する場合はチェックボックスアイコンを表示します存在すると、ダウンロードアイコンが表示されます。しかし、それは無限ループに陥るので、ブール変数を使用することをお勧めしますが、私の要素は動的であり、任意の数のダウンロードリンクが存在する可能性があるので、あらかじめ定義された変数はオプションではありません。* ngIfで関数を使用して無限ループになる角度2
Angular2コード
<div *ngFor="let item of getItems();">
<div ngIf="fileExists(item.url); then example2 else example1"></div>
<ng-template #example1>
<ion-icon class="myicon" name="download" color="primary"></ion-icon>
</ng-template>
<ng-template #example2>
<ion-icon class="myicon" name="checkbox" color="secondary"></ion-icon>
</ng-template>
</div>
活字体機能ファイルは、それが無限ループではありません
fileExists(url)
{
let path = "notif/"+url.substr(url.lastIndexOf('/')+1);
this.file.checkFile(this.file.externalRootDirectory, path).then(_ => {
console.log('File exists');
return true;
}).catch(err => {
console.log(err);
return false;
});
}
Ionicのドキュメンテーションに記載されているように、このメソッドを返します。Promiseブール値で解決されるプロミスを返します。だからあなたはそれを渡すことができるブール値に解決する方法を手伝ってくれますか? –
さて、この種の操作は前もって行う必要があります。結果の配列を準備してからテンプレートで使用すると、この問題は起こりません。 –
私は同じことをしてくれてありがとう、配列は最初に0と1に値を初期化しました。ファイルが存在するかどうかをチェックし、ダウンロードしたファイルの状態を変更します。 –