2016-02-26 56 views
1

我想獲得一個鼠標懸停事件的表格的行元素。問題是事件目標是光標下的td元素,而不是行元素本身。到目前爲止,這與角度無關。這是一個DOM的東西。 這裏是我的組件:Angular2 - 當事件發射器不是事件目標時該怎麼辦?

@Component({ 
//.... 
template: ` 
    <tr *ngFor="#row of rows;" (mouseover)="onRowHover($event)"> 
    <td *ngFor="#cell of row.cells">{{cell.value}}</td> 
    </tr>` 
}) 
export class Table { 
    private onRowHover(event) { 
    console.log("hover", event.target); //will print "hover <td>" 
    } 
} 

爲了解決這個問題,我通常用「這個」得到的行,這將是該行的元素:

<tr onmouseover="console.log("hover", this)"> <!-- Will print "hover <row>" --> 

所以現在的問題是:我該怎麼辦訪問'this'或Angular2中的行元素?有沒有像這樣的:

<tr ... (mouseover)="onRowHover($event, $this)" > 

我現在的解決方法是獲取適當的tr元素event.target的父項。

回答

2

如何約

<tr #tr *ngFor="#row of rows;" (mouseover)="onRowHover(tr)"></tr> 
+0

這給了我的行數據的上下文而不是TR DOM元素 – seraph

+0

然後使用$ event.target – kit

+0

請閱讀問題。問題是,事件目標不是行,但td元素 – seraph

0
console.log(event.path[0]); 

返回最內部元件鼠標在

+0

中指出的解決方法event.path是未定義的 – seraph

+0

我試圖在一個笨拙的玩家中嘗試,但我放棄了它,因爲它非常簡單。 –

+0

我重新創建了這個plunker https://plnkr.co/edit/ncdtRqsTHTYul8QnbtGy?p=preview –