无法读取未定义的属性“ img”-实施灯箱

时间:2019-11-26 21:36:26

标签: angular typescript lightbox

我正在尝试实现灯箱,但是出现以下错误:无法读取未定义的属性'img'。

有人知道我该怎么解决吗?

组件

img:any;

 ImageInfo(id) {
    var self = this;
    this.Global.refreshToken().subscribe(function (result) {
      self.fileService.getImages(id).then(function (resultado) {
        if (resultado) {
          self.imagMap.set(id,resultado);
          self.img = self.imagMap.set(id,resultado);

          self.items = this.img.map(item =>
            new ImageItem({ src: item.value, thumb: item.value })
          );

          this.basicLightboxExample();
          this.withCustomGalleryConfig();
        }
      }).catch();  
    });
  }

此行错误

 self.items = this.img.map(item =>
            new ImageItem({ src: item.value, thumb: item.value })
          );

我的img

Image

1 个答案:

答案 0 :(得分:0)

我认为问题始于以下几行:

terraform apply

您能否评论登录self.imagMap.set(id,resultado); self.img = self.imagMap.set(id,resultado); 后得到的结果? 我怀疑是self.img,问题就在这里。根据我的假设,此imageMap.set()函数未返回任何内容。结果,如果您可以set,则将为空。

所以,执行此操作并检查您是否为空。

console.log(self.img)

更新:

self.imagMap.set(id,resultado);
self.img = self.imagMap.set(id,resultado);
console.log(self.img) // check what you get on console

您可以摆脱ImageInfo(id) { this.Global.refreshToken().subscribe(function (result) { this.fileService.getImages(id).then(function (resultado) { if (resultado) { this.imagMap.set(id, resultado); this.img = this.imagMap.set(id, resultado); setTimeout(() => { this.items = this.img.map(item => new ImageItem({src: item.value, thumb: item.value}) ); this.basicLightboxExample(); this.withCustomGalleryConfig(); }) } }).catch(); }); } 变量,并将self替换为self。如果在此处附加整个component.ts文件,那就更好了。