我试图绑定我的类中的颜色属性(通过属性绑定获取)来设置我的div的background-color
。
import {Component, Template} from 'angular2/angular2';
@Component({
selector: 'circle',
bind:{
"color":"color"
}
})
@Template({
url: System.baseURL + "/components/circle/template.html",
})
export class Circle {
constructor(){
}
changeBackground():string{
return "background-color:" + this.color + ";";
}
}
我的模板:
<style>
.circle{
width:50px;
height: 50px;
background-color: lightgreen;
border-radius: 25px;
}
</style>
<div class="circle" [style]="changeBackground()">
<content></content>
</div>
此组件的用法:
<circle color="teal"></circle>
我的绑定不起作用,但也没有抛出任何异常。
如果我将{{changeBackground()}}
放在模板中的某处,那确实会返回正确的字符串。那么为什么样式绑定不起作用?
还要想一想,我如何观察Circle类中color属性的变化?什么是
的替代品$scope.$watch("color", function(a,b,){});
在角度2.0?
答案 0 :(得分:94)
证明样式与字符串的绑定不起作用。 解决方案是绑定样式的背景。
<div class="circle" [style.background]="color">
答案 1 :(得分:38)
截至目前(2017年1月/ Angular&gt; 2.0),您可以使用以下内容:
changeBackground(): any {
return { 'background-color': this.color };
}
和
<div class="circle" [ngStyle]="changeBackground()">
<!-- <content></content> --> <!-- content is now deprecated -->
<ng-content><ng-content> <!-- Use ng-content instead -->
</div>
最短路可能是这样的:
<div class="circle" [ngStyle]="{ 'background-color': color }">
<!-- <content></content> --> <!-- content is now deprecated -->
<ng-content><ng-content> <!-- Use ng-content instead -->
</div>
答案 2 :(得分:17)
我设法让它与alpha28一起工作:
import {Component, View} from 'angular2/angular2';
@Component({
selector: 'circle',
properties: ['color: color'],
})
@View({
template: `<style>
.circle{
width:50px;
height: 50px;
border-radius: 25px;
}
</style>
<div class="circle" [style.background-color]="changeBackground()">
<content></content>
</div>
`
})
export class Circle {
color;
constructor(){
}
changeBackground(): string {
return this.color;
}
}
并将其称为<circle color='yellow'></circle>
答案 3 :(得分:1)
尝试[attr.style]="changeBackground()"
答案 4 :(得分:0)
在您的 app.component.html 中使用:
[ngStyle]="{'background':backcolor}"
在 app.ts 中声明字符串类型backcolor:string
的变量。
设置变量this.backcolor="red"
。
答案 5 :(得分:0)
这在 Angular 11 和可能更早的版本中工作正常:
<div [style.backgroundColor]="myBgColor" [style.color]="myColor">Jesus loves you</div>
在控制器 .ts 文件中:
myBgColor = '#1A1A1A'
myColor = '#FFFFFF'