У меня есть директива (@Directive), которая подписана на наблюдаемую. Когда событие испускается, директива изменяет стиль (CSS) декорированного представления.Директива Angular2, подписанная на Observable, не может обновить представление
Это не работает, т. Е. CSS не изменяется, хотя мой код вызывается. Если я модифицирую CSS декорированного компонента в конструкторе директивы, он работает.
Кстати, я попытался подписаться на наблюдаемые в конструкторе директивы и в ngOnInit(), но безуспешно.
Это код директивы:
@Directive({
providers: [FooService],
selector: '[foo]',
})
export class FooDirective {
constructor(private _renderer: Renderer, private _el: ElementRef, private _fooService: FooService) {
// modify the CSS style when the directive is initialized
this._renderer.setElementStyle(this._el, 'color', 'yellow'); // this works
_fooService.subscribe(myevent => {
// modify the CSS style on an event
this._renderer.setElementStyle(this._el, 'color', 'yellow'); // this does not work (although it is called)
});
}
}
Пожалуйста, добавьте код, который демонстрирует, что вы пытаетесь выполнить. –
Когда вы добавляете 'console.log (myevent);' to 'subscribe()', записывает ли он на консоль? –
@ GünterZöchbauer да, он пишет (см. Мой комментарий: «хотя он называется») –