将[NgStyle]与条件组合(if..else)

Mr.*_*yte 42 angular2-template angular

我已经阅读了Angular2的NgStyle文档.对我来说有点困惑.关于如何使用NgStyle与条件(if ... else)来设置任何元素的背景图像的任何想法?

Zoh*_*har 59

人们也可以使用这种条件:

<div [ngStyle]="myBooleanVar && {'color': 'red'}"></div>
Run Code Online (Sandbox Code Playgroud)

它需要更少的字符串连接...

  • 这是迄今为止最有用的示例,因为它在满足条件时设置样式,否则保持不变。 (4认同)
  • 然而仍然应该有效的是: `booleanVar &amp;&amp; {color: 'red'} || 空`。 (4认同)
  • 看来这不再适用于 TS、严格类型和 Angular 14(不过还没有测试过早期版本)。你会得到`Type 'false | { 颜色:字符串;}' 不可分配给类型 '{ [klass: string]: any; } | 空'.`。因此,带有“null”的三元就像现在的替代方案。 (2认同)

Gün*_*uer 58

ngStyle绑定中使用三元运算符将用作if/else条件.

<div [ngStyle]="{'background-image': 'url(' + value ? image : otherImage + ')'}"></div>
Run Code Online (Sandbox Code Playgroud)


Joh*_*iel 16

以上答案对我不起作用,所以我决定改进这个.

你应该合作url(''),而不是有价值.

<li *ngFor="let item of items">
  <div
    class="img-wrapper"
    [ngStyle]="{'background-image': !item.featured ? 'url(\'images/img1.png\')' : 'url(\'images/img2.png\')'}">
  </div>
</li>
Run Code Online (Sandbox Code Playgroud)


小智 14

您可以按如下方式使用它:

<div [style.background-image]="value ? 'url(' + imgLink + ')' : 'url(' + defaultLink + ')'"></div>
Run Code Online (Sandbox Code Playgroud)


小智 6

[ngStyle]具有基于 if 和 else 情况的条件。

<label for="file" [ngStyle]="isPreview ? {'cursor': 'default'} : {'cursor': 'pointer'}">Attachment</label>
Run Code Online (Sandbox Code Playgroud)