在Angular中使用typescript,如何使用其键从图中选择一个节点?
当我创建一个新节点时,我必须用鼠标左键单击它以便选择它,我希望它立即被选中。
我必须在我的图表上调用哪个函数才能选择具有键" 1"的节点,这是我尝试过的,但似乎无法工作:
selectItem(item: any) {
this.selectedItem = item;
this.myDiagram.select(this.myDiagram.findNodeForKey(item.key));
if (this.selectedItem['toPort']) {
this.selectedItemtype = 'Link';
this.myDiagram.select(this.myDiagram.findLinkForData(item));
} else {
this.selectedItemtype = 'Node';
this.myDiagram.select(this.myDiagram.findNodeForKey(item.key));
}
// this.rerender();
}
我从一个树中删除一个项目并有两个窗口,图表窗口和一个属性窗口(我在其中编辑一个节点的属性),我需要能够直接编辑掉落项目的属性,但是似乎如果我编辑项目,而不是单击已删除的项目,它们将不再相同,并且先前编辑的项目将丢失。
答案 0 :(得分:1)
这基本上是正确的,但不必要地复杂化。但要么你要做两次(如果它是一个节点),要么你可能找不到链接,如果它不是模型中的链接数据对象。
如果您通过设置 GraphLinksModel.linkKeyProperty 为 GraphLinksModel 启用了链接键,则这应该足够了:
if (item.toPort !== undefined) {
myDiagram.select(myDiagram.findPartForKey(item.key));
} else {
myDiagram.select(myDiagram.findNodeForKey(item.key));
}
如果您尚未启用维护链接数据的唯一键,则需要执行您为链接所做的操作:
myDiagram.select(myDiagram.findLinkForData(item));
但这又取决于您的项与 GraphLinksModel.linkDataArray 中的对象引用相同。如果它不是同一个指针,您可能需要调用 Diagram.findLinksByExample 并选择一个。
关于属性编辑器,您使用的是DataInspector,https://gojs.net/latest/extensions/DataInspector.html吗?如果是这样,那应该是有效的。如果您已经实现了自己的HTML元素来编辑属性,那么您可能有错误的引用。您应该在 Diagram.selection 中显示/编辑第一个零件的属性。当用户从另一个图表(或相同的图表)拖动时删除节点的新副本时,新副本将位于 Diagram.selection 集合中。