【问题标题】:Can a angular component get data from ist outer/parent component角度组件可以从ist外部/父组件获取数据吗
【发布时间】:2021-10-18 08:52:52
【问题描述】:

我已经制作了角度组件并将它们用作 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>

所以 MyParent 组件有一个 @Input() 属性,它被赋予了一些设置。 但是它的孩子也需要得到这个设置。而且我宁愿不必为所有孩子添加 [setting]="A" (因为实际上它不仅仅是一个参数)。 有没有办法让子组件从其父组件获取此属性? 注意可以有多个父母,所以如果我使用服务作为通信平台,孩子需要有父母的一些id,以避免从错误的父母那里获取数据。但我宁愿不必将此 id 传递给所有孩子。

【问题讨论】:

  • 如果变得复杂,您可以为孩子和父母提供服务,以便他们充当调解人。所以你的孩子从服务而不是你的父母那里询问设置

标签: angular components


【解决方案1】:

如果你的孩子总是有一个父母,你可以使用@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)
  }

例如你可以有一个吸气剂

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

【讨论】:

    猜你喜欢
    • 2018-10-29
    • 1970-01-01
    • 2017-11-04
    • 2020-08-24
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多