2017-09-18 194 views
0

我需要一個點擊事件動態添加到div標籤:角4動態添加點擊事件

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

我的目標是這樣的:

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

我沒有得到任何錯誤當運行代碼但點擊事件似乎沒有被創建。

有什麼建議嗎?

+0

我不太清楚這是否可能會很高興,如果我錯了 –

+2

無法使用Angular綁定動態添加點擊處理程序。而是像'(click)=「item.click?doSomething($ event):null」'只在'item.click'真實時用戶點擊的情況下調用'doSomething()'。 –

+0

我不確定'(click)=「item.click」'應該做什麼(它現在不會做任何事情) –

回答

2

我在添加動態點擊時看不到任何問題。但是,您的項目應該是這樣的:

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

因此,在該項目中點擊屬性是沒有作用的結果。 _actionService.triggerAction() >>>_actionService.triggerAction

然後是htmlshould是這樣的:

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

希望這是有幫助!

這是實際的代碼,我tryed:

組件:

... 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

相關問題