querySelector需要在离子页面/角度中超时

时间:2017-03-31 10:22:50

标签: angular dom ionic2

这有效:

 ionViewDidLoad() {  

  var that = this;

          setTimeout(function () {
              that.img = that.el.nativeElement.querySelector('.user-image');
              alert(that.img.src);
          }, 300);
}

这不是

ionViewDidLoad() {

      var that = this;
      that.img = that.el.nativeElement.querySelector('.user-image');
      alert(that.img.src);

}

我确信这不是正确的行为。而且我真的不想设定时间来获得这个。那么为什么会这样呢?如何解决?

在我的html文件中:

<img class="user-image img-responsive full-width " *ngIf="user.pictureURL" src="myurl.com{{user.pictureURL}}"  />

1 个答案:

答案 0 :(得分:2)

这是因为调用后可能会加载html模板。 您需要使用ViewChild来获取ElementRef

<img #imageId class="user-image img-responsive full-width " *ngIf="user.pictureURL" src="myurl.com{{user.pictureURL}}"  /><!--set id with # -->

在组件中:

import {ViewChild, ElementRef} from '@angular/core';

//...In class,
@ViewChild('imageId') imageElement:ElementRef;

ionViewDidLoad() {
   alert(this.imageElement.nativeElement.src);

}