Torgeir Helgevold's postまたはthis Plunkerから借りたTreeViewコンポーネントを使用しています。私は任意のノードをダブルクリックするとTreeViewから親メソッドを呼び出そうとしますが、それはトップノードに対してのみ機能します。ここで私が持っているもので、これまで 親コンポーネントネストされたTreeViewディレクティブコンポーネントの角2の呼び出し親要素
@Component({
selector: 'hierarchy-mgmt',
template: ' <div class="accounts-container col col-lg-3 col-md-4 col-xs-12">
<h2>Managed Accounts</h2>
<tree-item-renderer [account]="commonNodeModel.rootNode"
(editing)="editStart($event)">
</tree-item-renderer>
</div>
',
providers: [TreeItemRendererComponent]
})
export class HierarchyMgmtComponent implements OnInit {
//... constructor and other code
ngOnInit(): void {
this.nodeService.getNodesForUser()
.then((rootNode: CustomerNode) => {
this.commonNodeModel.RootNode = rootNode;
this.commonNodeModel.SelectedNode = rootNode;
return this.nodeService.getNodeValidationDetails();
})
.then((nodeValidationDetails: NodeValidationDetails) => {
this.commonNodeModel.NodeValidationDetails = nodeValidationDetails;
this.hierarchyLoaded = true;
console.log(this.commonUserModel.usersForSelectedNode);
})
.catch(
Utils.callFailureWithResponseDataFunction((failureResponse: any, hasBeenDisplayedToUser: any) => {
this.notifyService.notifyUserIfNecessary(hasBeenDisplayedToUser, "There was a problem initialising this page. Please contact Support");
}));
}
editStart(node: CustomerNode) {
this.commonNodeModel.EditingNode = node;
}
// ... other code
}
TreeItemRendererコンポーネント
@Component({
selector: 'tree-item-renderer',
template: `
<div class="node">
<span class="node-input" [ngClass]="getSelectedClass()" (dblclick)="edit(account)" (click)="spanSelected()"
title="{{account.name}}" [innerHtml]="account.name"></span>
<input type="text" class="editField" [ngModel]="account.name" placeholder="Enter an Account Name">
<ul class="node-list">
<li *ngFor="let account of account.children">
<tree-item-renderer [account]="account" (editing)="editStart($event)"></tree-item-renderer>
</li>
</ul>
</div>
`
})
export class TreeItemRendererComponent implements OnInit {
@Output()
editing: EventEmitter<any> = new EventEmitter<any>();
edit(node: any) {
this.editing.emit(node);
}
// ... other codes
}
問題は、その子ノードがTreeItemRendererコンポーネントとないにHierarchyMgmtComponentに参照先を持っています。 のTreeItemRendererのコンポーネントには、(編集)= "parents.editStart($ event)"のようなものが必要です。誰も助けてください。ありがとうございました。
はまた、私は「私はそれを試してみました、それが働いている」TreeItemRendererコンポーネントに注入することができるHierarchyMgmtComponent部品の認識していますが、それは私が探していますものではありません。
http://plnkr.co/edit/LLCBJUZFH1ySLSGzBoW3?p=preview – yurzui