Я пытаюсь реализовать функциональность, которая выполняет следующие действия:
Когда узлы выбираются из иерархии TreeNode слева, они отображаются в порядке выбора справа. Мне удалось добиться этого с помощью EventEmitters, но сейчас я пытаюсь найти более простой / понятный способ сделать это.
Флажок-tree.component.ts:
import { Component, EventEmitter, Output } from '@angular/core';
import { TreeNode } from './../../dto/TreeNode';
import { BaseTreeComponent } from './../base-tree/base-tree.component';
import { Subject } from 'rxjs/Subject';
import html from './checkbox-tree.component.html';
import css from '../fortune-select.component.css';
@Component({
selector: 'checkbox-tree',
template: html,
styles: [css],
})
export class CheckboxTreeComponent<T> extends BaseTreeComponent<T> {
rightSideSubject = new Subject<TreeNode<T>[]>();
selections: TreeNode<T>[] = [];
//gets called when a node is selected
public selected():void {
if(!this.linked || (this.currentNode.indeterminate && !this.currentNode.selected)) {
this.dataChangedEvent();
return;
}
this.currentNode.indeterminate = false;
if(this.singleLevelOnly) {
this.currentNode.selectChildrenSingleLevel(this.currentNode.selected);
} else {
this.currentNode.selectChildren(this.currentNode.selected);
}
this.selections.push(this.currentNode);
this.rightSideSubject.next(this.selections);
this.childChanged.emit();
this.dataChangedEvent();
}
}
В этой функции «currentNode» имеет значение текущего узла, который был выбран.
Я хочу сохранить список, который имеет все узлы в порядке выбора. Я хочу подтолкнуть узел в теме всякий раз, когда он выбран. Как я могу это сделать? Текущий узел необходимо вставить в тему.
В другом компоненте я могу получить rightSideSubject в качестве ввода и отображения!
Как передать эти данные и вставить их в rightSideSubject, если выбрано?