私は数日間、PrimeNgのTreeモジュールを使って作業していました。しかし、私は依然として私のカスタムcopyTo
関数のオブジェクト参照に問題があります。コールバックがポスト操作と呼ばれるためです。角4 PrimeNg Treeドラッグアンドドロップでコピー
ドラッグ&ドロップハンドラーを中断するためのエレガントな方法を探しています。データを詳細にコピーしてより細かい制御が可能です。プラグインの機能をオーバーライドできるようにクラスを拡張する必要があるように感じる必要があるように感じますが、アップグレードするときにプラグインの機能が低下するかどうかはわかりません。
アドバイスや「おすすめ」の提案は大変ありがとうございます。
以下のコードは、既知のインデックスを持つ要素を取り出し、それをドラッグしたツリーに再度挿入し、あるツリーから別のツリーにコピーします。ただし、これは既知の索引でのみ機能し、ネストされたノードの深度を変更することはできません。我々はただによるオリジナルのTreeNodeオブジェクトの参照を含むTreeNode.parent.childrenアレイに循環参照を扱うことができ、適切な深いコピーを必要なことがわかった別の開発者の作業が終了した後
copyToTree: any = []; // tree obj cache
staticTree: any = []; // tree obj cache
// Fires when node is dropped on copyToTree
dropOnCopyTo(event: any) {
let dragged: any = event.dragNode;
if(dragged.field_name == null) { // dragged from staticTree
// re-add copy to correct position in staticTree
let copy: any = this.deepCopy(dragged);
this.staticTree.children.splice(copy.index, 0, copy);
// Update field_name of dragged in copyToTree
dragged.field_name = 'new_' + Date.now();
}
}
これまでに試したことのコードを投稿できますか? – Cody
現在のコピー機能で更新されましたが、前述のように、非静的ツリーノードコピーはサポートされていません – navybofus