【问题标题】:Angular 5 - new images not displaying after promiseAngular 5 - 承诺后不显示新图像
【发布时间】:2018-11-29 20:55:07
【问题描述】:

在我的 Angular 5 应用程序中,用户将图像上传到 API,API 以 URL 响应新图像。承诺完成后,我可以将新的图像对象添加到 DOM,但除非我重新加载页面,否则图像不会显示在 GUI 中。

页面重新加载之前:

页面重新加载后:

如何在不重新加载整个页面的情况下显示图像?

这是承诺:

    this.http.post(`${this.env.api}/v1/images`, formData)
        .map(res => res.json())
        .catch(error => Observable.throw(error))
        .subscribe(
            (response) => {
                for (let image of response.data) {
                    this.campaign.images.push(image);
                }
            },
        )

这是 HTML:

<div *ngFor="let image of campaign.images; let i = index;">
    <a [href]="image.web_url" target="_blank">
        <img src="{{ image.web_url }}?width=100&height=100">
    </a>
</div>

【问题讨论】:

  • 将项目推入数组通常会导致更改检测出现问题 - 尝试用包含现有和新项目的新数组替换整个数组。参见例如stackoverflow.com/q/47687441/3001761 用于手动更改检测。

标签: html angular image dom promise


【解决方案1】:

尝试以下方法:

this.http.post(`${this.env.api}/v1/images`, formData)
        .map(res => res.json())
        .catch(error => Observable.throw(error))
        .subscribe(
            (response) => {
                for (let image of response.data) {
                    let images = [...this.campaign.images];
                    images.push(image);
                    this.campaign.images = [...images];

                }
            },
        )

【讨论】:

  • 嗯,恐怕图像仍然无法加载。在页面重新加载之前,我在检查器中看到了这个:&lt;img src="?width=100&amp;amp;height=100"&gt;,在页面重新加载之后,我看到了这个:&lt;img src="http://api.fc.lo/i/2018/06/Screenshot from 2018-06-18 14-00-25.png?width=100&amp;amp;height=100"&gt;
  • 在锚标签外输出image.web_url {{image.web_url}} 看看是否在重新加载之前打印了url
  • 好主意。我试过了,在页面重新加载之前没有打印 URL。
  • 尝试在 subscribe() 的 for 循环中将它们记录到控制台。在重新加载之前查看响应是否有 url。如果响应正确,请尝试在活动中使用主题/可观察对象并注意任何更改。希望这可能会触发属性的更新。
  • 是的,当我将数据记录到控制台时,所有数据都在那里。虽然我不确定如何“尝试在广告系列中使用主题/可观察”。
猜你喜欢
  • 1970-01-01
  • 2021-01-10
  • 1970-01-01
  • 2019-03-02
  • 1970-01-01
  • 1970-01-01
  • 2018-11-23
  • 2021-12-09
相关资源
最近更新 更多