【问题标题】:this.slides.length() Cannot read property 'length' of undefinedthis.slides.length() 无法读取未定义的属性“长度”
【发布时间】:2018-01-11 07:45:17
【问题描述】:

console.log(this.slides.length()); 打印 Cannot read property 'length' of undefined.setTimeout(共 100 个)上打印。

是否有任何方法可以识别子组件是否从父组件完全加载?

<ion-content padding class="ttct-app-content">
    <ion-slides>
      <ion-slide>
        <h1>Slide 1</h1>
      </ion-slide>
      <ion-slide>
        <h1>Slide 2</h1>
      </ion-slide>
      <ion-slide>
        <h1>Slide 3</h1>
      </ion-slide>
    </ion-slides>
</ion-content>
import { Component, ViewChild } from '@angular/core';
import { NavController, Slides } from 'ionic-angular';

@Component({
  selector: 'page-compose',
  templateUrl: 'compose.html',
})
export class Compose {
  @ViewChild(Slides) slides: Slides;

  constructor(public navCtrl: NavController) {
  }

  ngAfterViewInit(){
    console.log(this.slides.length()); //Cannot read property 'length' of undefined
    //works
    /*
    setTimeout(()=>{    
      console.log(this.slides.length());
    },100); 
    */

  }

}

【问题讨论】:

  • 你试过其他的钩子吗?
  • @BogdanC:是的,我尝试了这篇文章中的所有钩子angular.io/guide/lifecycle-hooks#!#spy
  • 这是 ionic-2 中的错误吗?
  • 请添加您正在使用的离子版本,以便我进行测试。
  • @BogdanC : "ionic-angular": "3.5.3",

标签: angular ionic2


【解决方案1】:

试试这个(你不需要导入其他任何东西):

ionViewDidEnter() {
    console.log(this.slides.length());
}

还尝试了使用 ngFor 加载的滑块并像魅力一样工作

【讨论】:

    【解决方案2】:

    尝试将控制台登录:

    ionViewDidLoad() { 
    
    }
    

    而不是 ngAfterViewInit()。

    【讨论】:

      【解决方案3】:

      如何从孩子的 onInit 引发事件并在父母中观看? https://angular.io/guide/component-interaction#parent-listens-for-child-event

      【讨论】:

        【解决方案4】:

        看起来这是因为 &lt;ion-slide&gt;&lt;/ion-slide&gt; 子级没有在页面挂钩上初始化。这就是为什么当你把setTimeout() 工作时,因为在那之前它们被初始化并添加到&lt;ion-slides&gt; 父级。 在钩子出现后,您可以通过单击按钮来查看length() 属性。 您可以在 here 附近找到工作。

        【讨论】:

          【解决方案5】:

          尝试创建这个方法来获取长度

           get slides_length() {
              if (this.slides && this.slides._slides) {
                  return this.slides._slides.length;
              }
          
              return 0;
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-11-01
            • 1970-01-01
            • 1970-01-01
            • 2015-08-10
            • 2020-09-14
            • 2020-12-23
            • 2020-06-12
            • 2014-09-30
            相关资源
            最近更新 更多