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

问题描述 投票:0回答:1

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

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

Component

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

angular typescript lightbox
1个回答
0
投票

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

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替换为this。如果在此处附加整个component.ts文件,那就更好了。


0
投票

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

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);

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

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

您可以删除self变量,然后将self替换为this。如果在此处附加整个component.ts文件,那就更好了。


0
投票

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

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
© www.soinside.com 2019 - 2024. All rights reserved.