19

我想使用动态添加的多个IonicSlides。但我不能使用@viewChild. 请提出解决此问题的方法。

模板.html:

<div *ngFor="let name of title;let i = index;">
    <ion-slides  id="something" #slides>
        //some code
    </ion-slides>
</div

组件.ts:

  @ViewChild('slides') slides: QueryList<Slides>;

  ....

  ngAfterViewInit(){
        setTimeout(()=>{
              alert(this.slides.toArray()); //this line rise error 
        }, 3000);
  }

错误 :

_this.slides.toArray 不是函数

4

2 回答 2

35

使用@ViewChildren代替@ViewChild阅读更多

@ViewChild

您可以使用 ViewChild 从视图 DOM 中获取与选择器匹配的第一个元素或指令。

@ViewChildren

您可以使用 ViewChildren 从视图 DOM 中获取元素或指令的 QueryList。

于 2018-02-01T12:04:17.860 回答
0

@ViewChild用于单个元素或指令。要从视图 DOM 中获取QueryList元素或指令,请使用@ViewChildren

HTML

<div *ngFor="let name of title;let i = index;" #slides>
    <ion-slides  id="something">
        //some code
    </ion-slides>
</div

组件.ts

@ViewChildren("slides") private slides: QueryList<ElementRef>;
  ....

ngAfterViewInit(): void {
    this.slides.changes.subscribe(() => console.log(this.slides));
}
于 2021-11-29T12:41:49.283 回答