В зависимости от того, как изменится это логическое значение, вы можете представить его как Observable<boolean>
в своем сервисе, а затем подписаться на этот поток в своем компоненте. Ваш сервис будет выглядеть примерно так:
@Injectable()
export class MyBooleanService {
myBool$: Observable<boolean>;
private boolSubject: Subject<boolean>;
constructor() {
this.boolSubject = new Subject<boolean>();
this.myBool$ = this.boolSubject.asObservable();
}
...some code that emits new values using this.boolSubject...
}
Тогда в вашем компоненте у вас будет что-то вроде этого:
@Component({...})
export class MyComponent {
currentBool: boolean;
constructor(service: MyBooleanService) {
service.myBool$.subscribe((newBool: boolean) => { this.currentBool = newBool; });
}
}
Теперь, в зависимости от того, что вам нужно сделать с этим логическим значением, вам может потребоваться сделать некоторые другие вещи, чтобы ваш компонент обновился, но это суть использования наблюдаемого. Обратите внимание, что в какой-то момент вы захотите отказаться от подписки на поток myBool$, чтобы предотвратить утечку памяти и неожиданные побочные эффекты.
Другой вариант — использовать асинхронный канал в своем шаблоне вместо явной подписки на поток в конструкторе. Это также обеспечит автоматическое удаление подписки. Опять же, это зависит от того, что именно вам нужно делать с логическими значениями.
person
Sam Storie
schedule
28.03.2016