是否可以在根组件模板中添加组件并能够从子组件访问它。例如,假设这是根应用程序组件:
<main>
<global-component #globalComponent></global-component>
<child-component></child-component>
</main>
我想要的是,在“子组件”的代码中,能够这样做:
@Component({...})
export class ChildComponent
{
@SomethingAwesome(GlobalComponent) globalComponent: GlobalComponent;
}
目标是始终以相同的方式显示错误/警告。“globalcomponent”模板将是一个模式消息,我希望能够随时显示它。例如:
...
this.globalComponent.ShowError("Something's weird in here !");
...
我想到的另一个选择(我想)是创建一个具有可观察性的服务,“globalcomponent”将订阅该服务并做出相应的反应,但我想知道我的要求是否可行。
编辑:
在本例中,组件是同级的,但情况可能并非总是如此。”globalcomponent“应该可以在任何组件中使用,无论其“深度如何”。
谢谢
最佳答案
如果他们是兄弟姐妹,你可以把它传进去
<main>
<global-component #globalComponent></global-component>
<child-component [global]="globalComponent"></child-component>
</main>
@Component({...})
export class ChildComponent
{
@Input() global: GlobalComponent;
ngOnInit() {
console.log(this.global);
}
}