angular - 如何在创建时获取对 ngFor 生成的每个元素的引用

angular - How to get a reference to each element generated by ngFor when it's created

我正在尝试在由 ngFor 生成后在我的元素上绑定 jQuery UI 功能。因此,我正在寻找的是一个事件或我可以在我的组件中使用的东西,它提供对创建的新元素的引用。 类似的东西:

sample.component.html

<!-- Parent div is the element I want a reference to each time it's created
     so I can automatically bind the functionality -->

<div *ngFor="let item of items"> 
    <img src="whatever.jpg">
    <p> some other stuff here </p>
<div>

sample.component.ts

/* Something like Angular lifecycle hooks */

onNewElement(el) {
   $(el).draggable();
}

是否可以使用某种回调或在生成每个元素后触发的 angular 方法?您有机会提供样品吗?

试试这个? span 不会产生任何 css 问题。

   <div *ngFor="let item of items"> 
      <span class="draggable">
        <img src="whatever.jpg">
        <p> some other stuff here </p>
      </span>
    <div>

不要将 JQuery 与 Angular 一起使用。你不应该自己去碰 DOM,你应该让 Angular 去做。

<div *ngFor="let item of items" #elements> 
    <img src="whatever.jpg">
    <p> some other stuff here </p>
<div>

在你的 TS 中:

@ViewChildren('elements') els: QueryList<any>;

有了这个元素列表,你可以得到任何元素的引用。

例如,获得第一个:

const first = this.els.first;

这将为您提供可以使用渲染器操作的元素:

constructor(private renderer: Renderer2) {}

(请注意,您需要加载视图才能访问子视图,这意味着最后一个可用的挂钩是 AfterViewInit