2016-09-23 10 views
1

私はこのようにhtmlテンプレートに表示するデータのリストを持っています。Angular 2のイベントハンドラでhtml要素のプロパティ/属性を渡すにはどうすればよいですか?

<div> 
    <a (click)='onClick(this)' someproperty='test'></a> 
    <a (click)='onClick(this)' someproperty='test'></a> 
    <a (click)='onClick(this)' someproperty='test'></a> 
    <a (click)='onClick(this)' someproperty='test'></a> 
</div> 

アイテムをクリックするたびに動的に1つのプロパティを変更したいと考えています。ただし、Angularはオブジェクトを未定義として表示しています。ここでは、このことができますPlunker!!

希望がある

declare var $:any; 
export class MyComponent { 
    onClick(someobject): void { 
    $(someobject).attr('someproperty','dontTest');//console shows "Undefined" 

    } 
} 

答えて

6

は以下しようと、

<a (click)='onClick($event)' someproperty='test'>click me</a> 

onClick(someobject): void { 
    someobject.target.attributes['someproperty'].value = "donttest"; 
    console.log(someobject.target.attributes['someproperty'].value); 
    } 

!!:

は、ここで私のコンポーネントでありますあなたは、テンプレート

でそれをすべて行うことができます

+0

thanks Madhu。それを試してみましょう。 –

+0

$イベントを渡すソリューションが私が探していたものでした。 –

2

Attribute Bindingマニュアルを参照してください。

ここ
<div> 
    <a (click)="val1 = 'new val 1'" [attr.someproperty]="val1">Link 1</a> 
    <a (click)="val2 = 'new val 2'" [attr.someproperty]="val2">Link 2</a> 
    <a (click)="val3 = 'new val 3'" [attr.someproperty]="val3">Link 3</a> 
</div> 

plunker

ちょうどリンクを検査し、someproperty変化を見るためにそれをクリックしてください。

+0

素晴らしい。ありがとうございました。それはプランカで働いた。今すぐコードに実装して戻ってきます。 –

+0

偉大な:)あなたの必要性に答えた場合は、答えを検証することを忘れないでください。 –

関連する問題