Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何防止“MatListOption”被选中/取消选中?_Angular_List_Angular Material_Readonly - Fatal编程技术网

Angular 如何防止“MatListOption”被选中/取消选中?

Angular 如何防止“MatListOption”被选中/取消选中?,angular,list,angular-material,readonly,Angular,List,Angular Material,Readonly,设置: 角材料8.1.4 使用: 及 问题: 我需要显示用户无法检查/取消检查的几个以前选择的项目,这样它们的行为就好像是只读的 这个问题是由于不支持readonly属性引起的,该属性可以有效地解决我的问题 设置(单击)=“$event.stopPropagation()”也不会阻止单击它 有什么想法吗 谢谢 警察局。作为参考,我刚刚在 ppd。我确实使用禁用的进行了测试,但这会阻止将项目添加到最终列表中,这不是预期的行为。通过添加额外的(selectionChange)=“selectedC

设置:

角材料8.1.4

使用:

问题:

我需要显示用户无法检查/取消检查的几个以前选择的项目,这样它们的行为就好像是
只读的

这个问题是由于不支持
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
,它们会生成一个复选框列表。