「ツリー」と呼ばれる角型コンポーネントがあります。私が望むのは、私のアプリの他のコンポーネントからツリー上のメソッドを呼び出すことです。私のアプリ全体にはいつでも1つのツリーしか存在しません。角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();
}
}
すると、このAでありAngular2 +または一般的にMVCでの優れた実践ですか?
Edit1: ライブラリからインポートされたTreeComponentコードにアクセスできないように指定するのを忘れていました。
消費者は常にアクティブノードを知っておく必要がありますか? – bryan60
ツリーコンポーネント自体をツリーサービスに格納する代わりに、ツリーコンポーネントに必要なデータを操作するメソッドをツリーサービスに含める必要があります。ツリーサービスで観測可能なものを設定し、それをツリーコンポーネントからサブスクライブします。これにより、依存するデータが変更されたときにツリーコンポーネントを適切に更新できます(ツリーサービス内)。 –