"트리"라는 각 구성 요소가 있습니다. 내가 원하는 건 내 애플 리케이션의 다른 구성 요소에서 트리에 메서드를 호출하는 것입니다. 내 전체 앱에는 언제든지 하나의 트리 만있을 것입니다.각도 2+ : 서비스를 사용하여 구성 요소 참조 공유
export class AppComponent implements OnInit {
@ViewChild("tree") treeComponent: TreeComponent;
constructor(private treeService: TreeService) { }
ngOnInit() {
this.treeService.setTreeReference(this.treeComponent);
}
}
가 그럼 난이 방법을 호출 할 수 있습니다 : 그것은 이런 식으로 내가보고 싶은 장소에서 구성 요소를 생성하고 서비스를 사용하여 componentRef를 공유 할 괜찮
export class OtherComponent {
constructor(private treeService: TreeService) { }
getActiveNode() {
return this.treeService.treeReference.getActiveNode();
}
}
것은 이것을인가 Angular2 + 또는 일반적으로 MVC에서 우수 사례?
Edit1 : 라이브러리에서 가져온 TreeComponent 코드에 액세스 할 수 없다고 지정하는 것을 잊어 버렸습니다.
소비자는 항상 활성 노드를 알 필요가? – bryan60
트리 서비스에 트리 구성 요소 자체를 저장하는 대신 트리 구성 요소에 필요한 데이터를 조작하는 메소드가 트리 서비스에 포함되도록 허용해야합니다. 트리 서비스에서 관찰 가능 항목을 설정하고 트리 구성 요소에서 등록합니다 (트리 서비스에서 변경된 일부 데이터가 변경되면 트리 구성 요소를 적절히 업데이트 할 수 있습니다). –