Angular 如何创建对动态创建的组件的引用?

Angular 如何创建对动态创建的组件的引用?,angular,typescript,Angular,Typescript,我在任何地方都找不到如何创建对从数组动态创建的组件的引用 HTML <div *ngFor="let item of items"> <my-component [data]="item.data"></my-component> </div> 我需要访问TypeScript代码中的每个(将从数组中动态创建) 示例: 项数组的长度为2。所以在TypeScript代码中,我需要这样的东西 myComponent0-对1的引用 MyCom

我在任何地方都找不到如何创建对从数组动态创建的组件的引用

HTML

<div *ngFor="let item of items">
    <my-component [data]="item.data"></my-component>
</div>

我需要访问TypeScript代码中的每个
(将从数组中动态创建)

示例:

数组的
长度为2。所以在TypeScript代码中,我需要这样的东西

myComponent0-对1的引用<代码>

MyComponent 1-参考2<代码>


谢谢

使用查看儿童装饰器


@ViewChildren('components')组件:QueryList;
使用

从'@angular/core'导入{ViewChildren,QueryList,…};
导出类AppComponent{
@ViewChildren(MyComponent)组件:QueryList
...
ngAfterViewInit(){
this.components.forEach(componentInstance=>console.log(componentInstance));
}
...
}
此处
MyComponent
是组件类的导出名称。这通常是
QueryList
类型,因此基本上可以将其视为一个数组并执行所需的操作

这仅在组件的
AfterViewInit
挂钩后可用



这是给你的参考资料的一封信。

谢谢,按照我的要求工作。直到今天,我只知道ViewChild,不知道ViewChildren,回答得很好,这是正确的方法,很高兴你接受了它。@Ploppy,在Typescript中,它将引用所有组件。鉴于它比其他答案做得更多,请将我重定向到您陈述的来源
这不是推荐的方法
!到底谁会想要一个变量,它的值会根据您访问它的位置而变化???在组件上创建
单击
事件的人(例如)?既然你没有为你的陈述提供任何来源,我只能假设你是根据自己的意见做出的。虽然你有权利提供它,我会问你,在未来,你不认为你的意见作为一个普遍的指导,但它是什么,为了不引诱错误的人。提前谢谢你!我不明白你的stackblitz有什么意义,但我想谢谢你?有趣的是,它从“这不是推荐的方法”到“我们彼此之间不教”(这也是你自己的观点)。争论是“我回答了这个问题,它很有效,而且做的比问的要多。一些随机的、不熟练的家伙对这个答案做出了错误的断言,并且无法证明。”我不会编辑我的问题,除非你证明我的问题是错的(与@Ploppy不喜欢它相反,所以每个程序员都不喜欢它),否则我不会支持,因为你甚至不能提供一个简单的URL。我的自我很好,谢谢你的邀请。
import { ViewChildren, QueryList, ... } from '@angular/core';

export class AppComponent {

  @ViewChildren(MyComponent) components: QueryList<MyComponent>

  ...

  ngAfterViewInit() {
    this.components.forEach(componentInstance => console.log(componentInstance));
  }

  ...

}