2017-09-18 4 views
0

を追加します。角度4は、動的に私が動的にdivタグにクリックイベントを追加する必要がありますクリックイベント

<div *ngIf="item.click"> 
    <div (click)="item.click" >{{item.name}} (should trigger({{item.click}})</div> 
</div> 

私のオブジェクトは次のようになります。

item: {name: 'Action', click: '_actionService.triggerAction()'} 

私はすべてのエラーを得ることはありませんコードを実行しているのにclickイベントが作成されていないようです。

提案がありますか?

+0

私はこれが可能であればかなりわからないが喜んでいるでしょう –

+2

角度バインディングを使用してクリックハンドラを動的に追加する方法はありません。 item.click?doSomething($ event):null "'(item.click'が真実であるときにユーザがクリックした場合にのみ) 'doSomething()'を呼び出します。 –

+0

'(クリック)=" item.click "は何をすべきかわかりません(現在の状態は何もしません) –

答えて

2

動的クリックを追加する際に問題はありません。しかし、あなたのアイテムは次のようなものでなければなりません:

したがって、アイテムのクリックプロパティは結果ではない関数です。 _actionService.triggerAction() >>>_actionService.triggerAction

そしてhtmlshouldのようなものであること:

<div (click)="item.click.call()" > 

便利ですね!

私がしようと試みてきた実際のコードです:

コンポーネント:

... implements OnInit { 

    public item: any = { name: 'name', click:() => { console.log('Some clcik has happened') } } 

... 

HTML:私が間違っている場合

<div (click)="item.click.call()"></div> 
+0

返信いただきありがとうございますが、これは動作しません。 "v.parent.context。$ implicit.click.callは関数ではありません" – h3li0s

+0

** _actionService.triggerAction **は関数ですか?その場合、より多くのコードを投稿して、問題がどこにあるかを確認することができます – kimy82

+0

ありがとうございました!あなたの編集で、私はこれを "item:{name: 'Action'}、{{this._actionService.triggerAction()})}をクリックして動作させることができました: – h3li0s

関連する問題