【问题标题】:Angular Parent to Child角度父母到孩子
【发布时间】:2019-03-13 13:54:07
【问题描述】:

最初我的父组件与子组件没有任何关系。只是一个元素列表。但是当用户单击列表子组件加载时。然后我可以使用@ViewChild 从父级调用子组件的方法。但这最初不起作用,因为最初没有父子关系。我该如何解决这个问题。

【问题讨论】:

    标签: angular dom parent-child communication


    【解决方案1】:

    我认为你可以使用 EventEmitter1。在组件中,您可以在加载时发出任何消息。在另一个组件中你可以订阅事件发射器。

    【讨论】:

      【解决方案2】:

      您可以使用@ViewChildren,它非常相似,但也适用于在AfterViewInit 生命周期挂钩之前尚不存在的元素。另外,它将您的元素包装在QueryList 中。

      QueryList 确实有一个 changes 属性,这是一个你可以订阅的 observable。实现可能如下所示:

      export class SomeComponent implements AfterViewInit {
      
        @ViewChildren(ChildComponent) children: QueryList<ChildComponent>;
      
        ngAfterViewInit(): void {
          this.children.changes.subscribe(children => {
            children.forEach( (child: ChildComponent) => {
              child.somePublicMethod();
            });
          });
        }
      }
      

      【讨论】:

        【解决方案3】:

        我使用@input() 将值从父级传递给子级并使用了

        ngOnChanges (changes: SimpleChanges) {
         for (let propName in changes) {
             let change = changes[propName];
             console.log(change);
         }
        

        }

        ngOnChanges 订阅更改并存储当前值和先前值的位置

        【讨论】:

          猜你喜欢
          • 2017-05-03
          • 2019-09-16
          • 1970-01-01
          • 2021-01-13
          • 2018-06-05
          • 1970-01-01
          • 2020-05-25
          • 2017-10-26
          • 2020-02-24
          相关资源
          最近更新 更多