ng-zorro tree-select 控件 [(ngModel)]绑定的值改变后同步失败

新手上路,请多包涵

问题描述

使用<tree-select>控件复选功能时,[(ngModel)]绑定的变量值通过输入流传入,当传入的值改变时,tree-select控件显示选中的节点只会增加,不会减少

问题出现的环境背景及自己尝试过哪些方法

尝试在监听到[(ngModel)]绑定值变化后,通过[(ngModel)]绑定值更新节点的选中状态。可以使<tree-select>的展开部分勾选显示正确,但输入框显示所选的节点值没有反应,且再次手动选择其他节点时,之前取消的节点再次被选中

相关代码

<nz-tree-select
[nzDefaultExpandAll]="true"
[nzNodes]="nodes"
[nzPlaceHolder]="please choose"
[(ngModel)]="selectData"
[nzMultiple]="true"
(ngModelChange)="onSelect($event)" name="treeSelect">
</nz-tree-select>

if (changes.selectNodes) {
  this.selectData = this.selectNodes;
  this.updateSelectStatus(this.nodes, this.selectNodes);
}

public updateSelectStatus(treeData, selectKeys) {
for (const item of treeData) {
  item.isSelected = (_.indexOf(selectKeys, item.key) !== -1) ? true : false;

  if (item.children.length) {
    this.updateSelectStatus(item.children, selectKeys);
  }
}

}

你期待的结果是什么?实际看到的错误信息又是什么?

[(ngModel)]绑定值变化后,<tree-select>显示正确,直接点击<tree-select>节点时,也选择正确
阅读 5.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进