Angular 如何防止“MatListOption”被选中/取消选中?
设置: 角材料8.1.4 使用: 及 问题: 我需要显示用户无法检查/取消检查的几个以前选择的项目,这样它们的行为就好像是Angular 如何防止“MatListOption”被选中/取消选中?,angular,list,angular-material,readonly,Angular,List,Angular Material,Readonly,设置: 角材料8.1.4 使用: 及 问题: 我需要显示用户无法检查/取消检查的几个以前选择的项目,这样它们的行为就好像是只读的 这个问题是由于不支持readonly属性引起的,该属性可以有效地解决我的问题 设置(单击)=“$event.stopPropagation()”也不会阻止单击它 有什么想法吗 谢谢 警察局。作为参考,我刚刚在 ppd。我确实使用禁用的进行了测试,但这会阻止将项目添加到最终列表中,这不是预期的行为。通过添加额外的(selectionChange)=“selectedC
只读的
这个问题是由于不支持readonly
属性引起的,该属性可以有效地解决我的问题
设置(单击)=“$event.stopPropagation()”
也不会阻止单击它
有什么想法吗
谢谢
警察局。作为参考,我刚刚在
ppd。我确实使用禁用的
进行了测试,但这会阻止将项目添加到最终列表中,这不是预期的行为。通过添加额外的(selectionChange)=“selectedChanged($event)”
事件解决了问题,该事件定义为:
selectedChanged($event: MatSelectionListChange) {
if ($event.option.value.isChecked) {
$event.option.selected = true;
}
}
isChecked
这里是我用来区分所选选项的业务筛选器,方法是发出$event.option.selected=true代码>项目保持选中状态,这是预期行为。是的,如果条件匹配,您可以防止选中/取消选中mat选项
<mat-selection-list (selectionChange)="onChange($event)" >
<mat-list-option *ngFor="let data of dataList" [value]="data" >
<h3>{{data}}</h3>
</mat-list-option>
</mat-selection-list>
onChange(event: any) {
if(condition === false){
event.option.selected = false;
}
}
{{data}}
onChange(事件:任何){
如果(条件===false){
event.option.selected=false;
}
}
我仍然不明白,您可以通过编程方式选择要选择的元素的值,即使这些元素被禁用,作为选中项,用户不能选中或取消选中它们。我在此处选择了香肠和西红柿,西红柿被禁用,所以用户不能选中或取消选中,但程序员可以。这不是你想要的吗?谢谢你的评论。这将检查项目,但结果相同,因为它们被禁用,所以不会进入form.value
。我使用select=true
以声明的方式实现相同的效果。我所关注的是一种让用户始终选中它们的方法,因此用户不能取消选中它们,但这些项目会进入表单.value
调用。另外,考虑到我没有在此处使用mat select
,但是mat selection list
和mat list option
,它们会生成一个复选框列表。