我正在制作一个Bootstrap复选框下拉菜单,选项包含在处理点击的<a>
标签中,但我在a-tag中也有一个<input type="checkbox">
。
当用户按下实际的复选框而不是<a>
元素时,会出现问题。两者都被点击,发生了一些冲突。复选框check-state应该被反转,但不是。
在Angular1中,只需在复选框上单击使用preventDefault(),但在我的angular2-test中,它会阻止复选框更新其状态。
需要帮助我做错了。
<ul>
<li *ngFor="#option of options">
<a href="" role="menuitem" tabindex="-1" (click)="setSelected($event, option)">
<input type="checkbox" [checked]="isSelected(option)" (click)="checkboxClick($event)" /> {{ option.name }}
</a>
</ul>
Plunker:https://plnkr.co/edit/6D5GQ9mnaMALNnPzf5Na
单击右侧的链接时,单击复选框时我想要相同的行为。
答案 0 :(得分:8)
只需将;false
添加到事件处理程序表达式即可。在preventDefault()
<input type="checkbox" [checked]="isSelected(option)" (click)="checkboxClick($event);false" /> {{ option.name }}
如果在checkboxClick()
答案 1 :(得分:1)
你应该检查一下。
https://plnkr.co/edit/jyX1hGNlRk0dNsR0XMXU?p=preview
<ul>
<li *ngFor="#option of options">
<a href="#" role="menuitem" tabindex="-1" (click)="setSelected($event, option)">
<input type="checkbox" [checked]="isSelected(option)" (keyup)="checkboxClick($event)" /> {{ option.name }}
</a>
</li>
</ul>
答案 2 :(得分:-1)
为什么不使用event.stopPropagation()
?
它阻止点击从复选框传播到点击处理程序...