angular组件可以从外部/父组件获取数据吗?



我已经制作了angular组件,并将它们用作HTML中的元素。如:

<my-parent [setting]="A">
<my-child-1>...</my-child-1>
<my-child-2>...</my-child-2>
</my-parent>
<my-parent [setting]="B">
<my-child-1>...</my-child-1>
<my-child-2>...</my-child-2>
</my-parent>

所以mypparent组件有一个@Input()属性,它被赋予了一些设置。但是它的子节点也需要得到这个设置。我不希望再加上[setting]="对于所有的子节点(实际上它不只是一个参数)。子组件是否有办法从父组件获得此属性?注意,可以有多个父节点,所以如果我使用一个服务作为通信平台,子节点需要有父节点的一些id,以避免从错误的父节点获取数据。但是我不希望把这个id传递给所有的子节点。

如果你的子类总是有一个父类,你可以使用@Host

在构造函数中注入父类
constructor(@Optional() @Host() private parent: ParentComponent){}

所以你可以在任何地方使用

//see that always check if parent is not null or undefined
if (this.parent)
{
console.log(this.parent.setting)
}

。你可以有getter

get settingParent()
{
//see that always check if parent is not null or undefined
return this.parent?this.parent.setting:null;
}

最新更新