具有angular2的全局组件

时间:2016-12-07 15:56:36

标签: angular

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

<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”应该可以在任何组件中使用,无论其“深度”如何。

由于

1 个答案:

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