【问题标题】:Showing images depending on Observables in angular 4以角度 4 显示取决于 Observables 的图像
【发布时间】:2017-05-05 13:59:59
【问题描述】:

我在 Angular 4 项目中使用 Observables(Rxjs 库)从带有 http get 的 api 获取数据,我想根据从 API 收到的数据显示徽标(png)

例如,当我的对象 [{{foo_icon}}] 收到 0 时,我显示风暴,当它收到 1 时,我显示云,当它是 2 时,我想显示太阳

这是我几周以来一直在尝试的代码:

<p*ngFor="let user of userService.users | async"{{user.data.hosts.running.foo_icon}}</p> 

 <div *ngIf="cloud; then sun; else storm"></div>
<ng-template #sun><img class="foo-icon" src="./app/img/sun.png"/></ng-template>
<ng-template #cloud><img class="foo-icon" src="./app/img/cloud.png"/></ng-template>
<ng-template #storm><img class="foo-icon" src="./app/img/storm.png"/></ng-template>           
</div>    

(userService 从可观察用户收到的日期)

提前致谢

【问题讨论】:

    标签: json angular rxjs observable angular2-observables


    【解决方案1】:

    您可以直接在图像上使用 ngIf。

    <div *ngFor="let user of userService.users | async">
      <div *ngIf="user?.data.hosts.running.foo_icon as fooIcon">
         <img *ngIf="fooIcon === 'sun'" class="foo-icon" src="./app/img/sun.png"/>
         <img *ngIf="fooIcon === 'cloud'" class="foo-icon" src="./app/img/cloud.png"/>
         <img *ngIf="fooIcon === 'storm'" class="foo-icon" src="./app/img/storm.png"/>
      </div>
    </div> 
    

    或者你可以在 src attr 中插入图标​​的 ref

    <div *ngFor="let user of userService.users | async">
      <img *ngIf="user?.data.hosts.running.foo_icon as fooIcon" [src]="'./app/' + fooIcon + '.png'"/>
    </div>
    

    【讨论】:

    • 感谢您的帮助“guduf”,但当我这样做时出现错误:错误错误:未捕获(承诺):TypeError:无法读取未定义的属性“数据”
    • 因为user的值为undefined。您可以传递 ? 运算符。 *ngIf="user?.data.hosts.running.foo_icon as fooIcon"
    • 谢谢你很酷..现在 *ngIf="user?.data.hosts.running.foo_icon as fooIcon" 没有错误,但是任何图像都会通过浏览器..
    • 您可以尝试执行&lt;pre *ngIf="user?.data.hosts.running.foo_icon as fooIcon"&gt;{{ fooIcon }}&lt;/pre&gt; 以确保fooIcon 是正确的值。
    • 当我这样做时,控制台中出现任何错误,但任何数据都通过视图传递,但是当我这样做时
      {{user. data.apps.foo_icon}}
      我收到了数据
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 2018-04-06
    • 2022-01-26
    • 1970-01-01
    • 2021-04-29
    • 2022-12-15
    相关资源
    最近更新 更多