私のアプリは説明付きで多くの画像を取得しました。ユーザーがナビゲートすると、これらのテキストが最初に表示され、画像が若干遅れて読み込まれます。ここにスピナーを追加したいと思います。画像をロード中にスピナーを示し、スピナーを追加して、画像を追跡するためにどのようにangle2でスピナーを使用して画像を読み込む方法
<myimgdir [src]='myimage.png'></myimgdir>
のようなイメージを示しディレクティブがロードされてかどうか、それを表示していますか?
私のアプリは説明付きで多くの画像を取得しました。ユーザーがナビゲートすると、これらのテキストが最初に表示され、画像が若干遅れて読み込まれます。ここにスピナーを追加したいと思います。画像をロード中にスピナーを示し、スピナーを追加して、画像を追跡するためにどのようにangle2でスピナーを使用して画像を読み込む方法
<myimgdir [src]='myimage.png'></myimgdir>
のようなイメージを示しディレクティブがロードされてかどうか、それを表示していますか?
アイデアは、デフォルトでスピナーを表示負荷があなたのコントローラで
var img = new Image();
/// set handler and url
img.onload = onloadHandler;
img.src = imageURLs[i];
/// if image is cached IE (surprise!) may not trigger onload
if (img.complete) onloadHandler().bind(img);
完了したときに表示される独立したImageオブジェクトを作成し、「へのonLoad」イベントを処理するための機能を追加することです{loading: false}
に状態を設定する:あなたのテンプレートでは
loading: boolean = true
onLoad() {
this.loading = false;
}
、状態はloading === true
を有しているロードGIF(またはものは何でもしたい)をレンダリングし、トリッキーな部分は、あなただけのでimg
要素を非表示にすることですので、それが実際にsrc
をロードしますレンダリングするからそれを防ぐために対立するものとして、そしてちょうど実際の画像に(load)
イベントにあなたのコントローラでonLoad
機能をバインド:
<img *ngIf="loading" src="/assets/loading.gif" alt="loading" />
<img [hidden]="loading" (load)="onLoad()" src="{{ source }}" />
このソリューションは、機能的にAngJobs年代と同じであり、しかし、それはより宣言的で、少し煩わしいIMOです。
PS:*ngIf
の代わりに[hidden]="boolean"
を使用するとちょっとした問題です。http://angularjs.blogspot.com/2016/04/5-rookie-mistakes-to-avoid-with-angular.htmlを見て、それを安全に適用する方法を解説してください。
あなたの第二のコード:あなたが好きそれを使用することができますブロックは奇妙に見える。 'img(...)'関数呼び出しに角度バインディングを渡しているようです。 –
@GünterZöchbauerそれは間違いですが、私は 'jade/pug'構文を使っていることを明確にしていませんでした。あなたが言及したブロックはマークアップであり、JavaScriptではありません。HTML構文 – perezperret
を使用するように編集します。それを自分で使ったことはありません。 –
最も簡単な方法は、onError
イベントをimg要素に使用することです。
<img [src]="image.src" onError="this.src='assets/my/fancy/loader.gif';">
https://webcake.co/a-loading-spinner-in-angular-2-using-ngswitch/、多分それはUを案内しますこれをチェック... –