angular - 使用 selectionMode 'multiple' 在 p 表中进行编程行选择
问题描述
我有一个 PrimeNG v12.2p-table
组件,缩写如下:
<p-table
[(selection)]="selectedMessages"
selectionMode="multiple">
我需要以编程方式选择用户刚刚单击的行。我想我只会selectedMessages
在点击中推送一个新对象,但它不起作用。对象被推送,但没有任何内容保持选中状态。
我需要处理右键单击。该行定义为:
<tr (contextmenu)="clickMessage(message)">
该事件通过以下方式处理:
clickMessage(mail: MailboxItem): void {
this.selectedMessages.push(mail);
}
成员初始化为空:
selectedMessages: MailboxItem[] = [];
我的事件正确触发,对象从空 ( []
) 变为其中包含一个MailboxItem
,但没有选择表行。
解决方案
这里的问题是只有在修改绑定到的数组时才会发生角度变化检测[(selection)]
。
解决方案是重新分配给数组本身,这将触发更改检测并正确选择行:
this.selectedMessages = [...this.selectedMessages, mail];
在我的用例中,我们想要取消选择除右键单击之外的所有行,所以它很简单:
this.selectedMessages = [ mail ];
推荐阅读
- cakephp - 如何将 sql 查询转换为 cakephp 查询并在控制器中使用
- php - 根据 WooCommerce 购物车中的运输类别隐藏 COD 付款方式
- nlp - 如何使用自然语言处理将文本映射到预设的主题列表
- python - 如何使用 GPT-2 获取文档嵌入?
- arrays - “无效的下一个控制变量引用”错误并且似乎无法执行代码?
- java - JavaFX CEF(Java Chromium Embedded Framework)在 JPanel 中的 Swing 节点不可见
- python - 使用 regex 和 matplotlib 为给定数据绘制图形
- python - 执行 python 脚本时 Cron 作业失败 - keyError
- java - log4j2 给出:java.io.IOException:在 Hadoop 二进制文件中找不到可执行的 null\bin\winutils.exe
- reactjs - 使用reactjs解码后如何设置localStorage中的值?