В основном я думаю, что ваша проблема не вращается вокруг наблюдаемых. Вы хотите изменить какой-либо цвет элемента в ответ на какое-либо другое действие элемента (предположим, при нажатии, поскольку это не предусмотрено в вашем фрагменте)
Просто используйте стандартный прослушиватель событий onClick
, чтобы установить другой стиль компонента:
<button (click)="onClick()">
<div [class]="classFromController"
и в контроллере:
onClick() {
if (/* any logic you wish */) {
this.classFromController = 'black';
} else if (/* other logic */) {
this.classFromController = 'white';
}
}
В вашем css
.black {
backgroundColor = '#ffffff';
}
.white {
backgroundColor = '#000000';
}
Избегайте встроенных стилей, потому что они считаются ужасным стилем кодирования и их легко избежать.
Если по какой-то особой причине вы должны использовать наблюдаемые, рассмотрите возможность использования Observable.fromEvent()
, как указано ниже:
http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#static-method-fromEvent