是否可以在根组件模板中添加组件,并且能够从子组件访问它。例如,假设这是根应用程序组件:
<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”应该可以在任何组件中使用,无论其“深度”如何。
由于
答案 0 :(得分:4)
如果他们是兄弟姐妹,你可以把它传递给
<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);
}
}