1. Все меняющиеся во времени сущности храни в Observable
2. Observable, который надо изменить снаружи называется Subject. Его разновидности, которые умеют помнить значения называются ReplaySubject (изначально пустой) и BehaviorSubject (изначально должен быть инициализирован).
3. Забирай ссылки на данные из сервиса в компонент.
4. Не подписывавайся на них, сразу вставляй в шаблон через asyncPipe
Пример.
В сервисе
private flagSource = new BehaviorSubject(false);
public flag: Observable<boolean> = this.flagSource;
setFlag(value: boolean) {
this.flagSource .next(value);
}
в компоненте
flag = this.myService.flag;
в шаблоне
<div *ngIf="flag | async">
asyncPipe следит за обсерваблом и заставляет компонент поучаствовать в детекции изменений