2016-02-04 41 views
0

我正在使用Angular2與JavaScript。目前在TreeView組件中有一個如下所示的模板:Angular2多個下拉受同一變化影響

<li> 
    <label style="color:red">{{block.toString()}}</label> 
    <select aria-label="block menu" (change)="blockMenuSelected(block,$event)"> 
    <option value="COPY_BLOCK" select>copy</option> 
    <option value="CUT_BLOCK">cut</option> 
    <option value="DELETE_BLOCK">delete</option> 
    </select> 
</li> 
<li *ngIf= "block.nextConnection && block.nextConnection.targetBlock()"> 
    <tree-view [block]="block.nextConnection.targetBlock()"></tree-view> 
</li> 

請注意,它是一個遞歸組件。所以treeview組件中有一個treeview組件。問題是,當我在塊菜單下拉菜單中選擇某些內容時,頁面上的任何其他塊菜單下拉菜單也受該選擇事件的影響。我試過給每個<select>元素一個唯一的ID,但這並沒有改變任何東西。我不確定這是否是Angular2錯誤,或者我做錯了什麼。

+1

這聽起來像它可能是事件冒泡。在'blockMenuSelected()'嘗試在事件中調用'stopPropagation()'。 –

+0

嗯。它聽起來像冒泡,但event.stopPropagation()不會導致不同的輸出。 –

回答

0

嘗試

blockMenuSelected(block, event) { 
    event.preventDefault(); 
    event.stopPropagation(); 
    ... 
} 

裁判https://github.com/angular/angular/issues/2042

+0

由於某種原因,這並不能解決問題。 –

+0

我認爲這可能是角度更新頁面而不是事件冒泡。 –