css – Angular 2中background-image url的属性属性绑定

前端之家收集整理的这篇文章主要介绍了css – Angular 2中background-image url的属性属性绑定前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在努力找出在许多Angular 2组件中动态更改background-image属性的最佳方法.

在下面的示例中,我尝试使用[ngStyle]指令将div的background-image设置为@Input值:

import {Component,Input} from '@angular/core';
import { User } from '../models';

// exporting type aliases to enforce better type safety (https://github.com/ngrx/example-app)
export type UserInput = User;

@Component({
  selector: 'profile-sidenav',styles: [ `
    .profile-image {
      background-repeat: no-repeat;
      background-position: 50%;
      border-radius: 50%;
      width: 100px;
      height: 100px;
    }
  `],template: `  
    <div class="profile-image" [ngStyle]="{ 'background-image': url({{image}})">
    <h3>{{ username }}</h3>
  `
})

export class ProfileSidenav {
  @Input() user: UserInput;
  blankImage: string = '../assets/.../camera.png';

  // utilizing "getters" to keep templates clean in 'dumb' components (https://github.com/ngrx/example-app) 
  get username() {
    return this.user.username;
  }
  get image() {
    if (!this.user.image) { return this.cameraImage;
    } else { return this.user.image; }
  }

我认为问题不在于observable,因为用户名显示并执行类似< img * ngIf =“image”src =“{{image}}”>渲染图像.我必须访问backgroung-image属性,因为显然这是制作圆形图像的最佳方式,但通常想知道如何做到这一点.

编辑:

我原来的[ngStyle]声明有不必要的花括号(ngStyle是一个可以带变量的指令),并且在url()和image周围缺少字符串标签.正确的方法是(如下所述):

<div class="profile-image" [ngStyle]="{'background-image': 'url(' + image + ')'}"></div>`.

正如原始编辑中所述,也可以使用Angular 2中的Renderer类来实现解决方案.我还没有这样做,但是认为setElementStylesor应该有这样的方法.我会尝试发布一个例子,但是如果有人向我(以及其他人)展示了如何暂时如此,我会很高兴.

解决方法

我认为你应该使用类似的东西:
<div class="profile-image"
     [ngStyle]="{ 'background-image': 'url(' + image + ')'}">

其中image是组件的属性.

看到这个问题:

> How to add background-image using ngStyle (angular2)?

猜你在找的CSS相关文章