是否可以在根组件模板中添加组件并能够从子组件访问它。例如,假设这是根应用程序组件:

<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);
    }
}

09-25 18:57