2016-08-03 2 views
1

私はAngular 2ベースのアプリケーションに取り組んでいます。 HTMLイベントハンドラの中に角変数を設定できるかどうかを知りたいのですが、可能な方法はありますか? 以下の例(画像の読み込みとスピナーの表示)は、問題のアイデアを示すことです。ディレクティブを使用せずにhtmlイベントハンドラ内の角プロパティをどのように変更しますか?

<img [class.hidden]="!loaded" src="{{imageUrl}}" 
    onload="{{loaded}}=true;" /> 

<img *ngIf="!loaded" src="loader.gif" />  

エラーコード:

browser_adapter.js:77 EXCEPTION: Error: Uncaught (in promise): Template parse errors: 
Can't bind to 'onload' since it isn't a known native property ([class.hidden]="!loaded" src="{{imageUrl}}" 
[ERROR ->]onload="{{loaded}}=true;" /> 

答えて

2
<img [class.hidden]="!loaded" src="{{imageUrl}}" 
    (load)="loaded=true" /> 

(eventName)="eventHandler"はAngular2のイベントをサブスクライブするためのものです。
onloadは、loadイベントのJavaScriptイベントハンドラです。 Angular2ではonを省略してイベントに登録し、プレーンなイベント名だけを使用します。あなたは、式の結果ならばfalseに、これはpreventDefault;trueを回避するにはイベント

<img [class.hidden]="!loaded" src="{{imageUrl}}" 
    (load)="loaded=false" /> 

に呼び出されますことを認識しておく必要があり

ヒント

は、式全体の結果ので、追加することができますは、true

関連する問題