Вы не можете просто привязать Subject
к переменной в вашем компоненте и ожидать, что angularjs обработает его автоматически. В отличие от более современного Angular, в angularjs есть концепция цикла дайджеста, цикл дайджеста влияет на то, когда изменения области видимости применяются к DOM. Это одна из причин, по которой angularjs не использует собственный Promise
, служба $q
реализует особый тип обещания, который интегрирован в цикл дайджеста angularjs. Поскольку Subject
(и Observable
в целом) отправляет angularjs и нет прямого эквивалента, который подключается к циклу дайджеста , вы несете ответственность за работу с Observable
и сообщение angularjs когда обрабатывать осциллограф.
Вот как это может выглядеть:
export class MyComponent implements ng.IComponentController {
public static $inject: string[] = [
'$scope',
'myService'
];
public updatedBoolean: boolean;
constructor(private readonly $scope: ng.IScope,
private readonly myService: MyService) { }
$onInit() {
this.myService.myBoolean.subscribe((value) => {
this.updatedBoolean = value;
this.$scope.$digest();
});
}
}
Примечание: я не знаком с ContextComponent
, поэтому я переключился на использование "стандартные" angularjs типы (например, npm install @types/angular@1.5.x
) для этого примера.