Представление Angular 2 не обновляется после обновления свойства через тему

Я устанавливаю цвет фона для динамического обновления div, назначая свойство style.background-color, как показано ниже.

<div [style.background-color]="cellColor">
  <span>{{ cellColor }}</span>
</div>

В его машинописном файле я назначил цвет по умолчанию, который был успешно установлен. Позже я изменяю значение свойства cellColor, подписываясь на Subject в жизненном цикле ngOnInit() файла компонента, как показано ниже.

Внутри Сервисного определения.

@Injectable()
export class StyleService {
  editClicked = new Subject();
  constructor() { }
}

Из другого компонента я добавляю новое значение для свойства "cellColor" следующим образом.

this.styleService.editClicked.next('white');

Затем я подписываюсь на тему из файла ts моего компонента, как это.

ngOnInit() {
    this.styleService.editClicked.subscribe(
      (color : string) => {
        this.cellColor = color;
        console.log(this.cellColor);
      }
    )
  }

Свойство было успешно обновлено, хотя представление не обновлялось. Я уже связываю свойство стиля моего div, используя скобки [], как показано выше, тогда почему бы не обновить представление? Я что-то здесь упускаю?

Однако для того же примера, если я подписываюсь, используя Observable, свойство изменяется, и представление также обновляется.

ngOnInit() {
     Observable.of(true)
      .delay(2000)
      .subscribe((success) => {
        if(success){
          console.log('Pretend loading: success!');
          this.cellColor = 'white';
          this.cdr.markForCheck();
        }
      });
}

Почему это будет работать при подписке на Observable, а не на Subject?

0 ответов

Другие вопросы по тегам