Я пытаюсь связать свойство цвета из моего класса (полученное путем привязки атрибута), чтобы установить значение background-color
my div
.
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
класса? Какая замена
$scope.$watch("color", function(a,b,){});
в Angular 2?
<div class="circle" [style.background]="'color'">
color
в данном случае это свойство вашего компонента, которое содержит значение, которое вы хотите использовать. Если вы используете кавычки, это значение, которое вы хотите использовать.color
недопустимый цвет CSS. Это должно быть что-то вроде[style.background] = "'#f3f3f3'"
.На данный момент (январь 2017 г. / Angular> 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>
источник
Мне удалось заставить его работать с 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>
источник
В вашем app.component.html используйте:
В app.ts объявить переменную строкового типа
backcolor:string
.Установите переменную
this.backcolor="red"
.источник
Пытаться
[attr.style]="changeBackground()"
источник