Как создать правильный выбранный узел для "рекурсивного выбираемого узла" в angular - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть компонент, который вызывает директиву из другого компонента.

, когда пользователь выбирает узел, хотел бы передать объект выбранного узла его родителю. Однако мой код для onSelectionChanged () не может вывести правильный объект выбранного узла, вместо этого он иногда выводит родителей выбранного узла. Кто-нибудь знает об этом?

parent.html
<recursive-selectable-tree-node [item]="parent"
                                *ngFor="let parent of rootParents; let i = index"
                                id="parent-{{i}}"
                                [selected]="parent.selected"
                               (nodeSelectedChange)="onSelectionChanged($event)">
</recursive-selectable-tree-node>
parent.ts
public onSelectionChanged(selectedNode) {
      console.log(selectedNode.name);
}

child.ts
@Component({
    selector: 'recursive-selectable-tree-node',
    template: `
        <tree-node [(selected)]="item.selected" 
                   (SelectedChange)="selectedChanged(item)">
                   {{item.name}}
            <ng-template
                   [ifExpanded]="item.expanded"
                   *ngFor="let child of item.children">
                       <recursive-selectable-tree-node
                          [item]="child" (nodeSelectedChange)="selectedChanged(child)">
                      </recursive-selectable-tree-node>
            </ng-template>
        </tree-node>
    `
})
export class RecursiveSelectableTreeNodeComponent {
    @Input() item: any;
    @Input() selected: boolean;
    @Output() nodeSelectedChange: EventEmitter<any> = new EventEmitter<any>();

    selectedChanged(child): void {
        this.nodeSelectedChange.emit(child);
    }
}

...