Допустим, у меня есть компонент html, где есть мой html my индикатор
<round-progress #progress
[current] = "current"
</round-progress>
Текущее - это процентное значение. В моем компоненте ts я делаю:
this.percentageSubscription=this.percentageService.percentage$.subscribe((percentage)=>{
this.current=this.current+percentage;
console.info(this.current);
});
значение, которое я печатаю, правильное. Увеличивается по другому алгоритму. В console.info отображается правильное приращение, но мое процентное значение не увеличивается на индикаторе выполнения. Кто-нибудь может мне помочь?
@Arne, я поставил {{current}}, и значение не обновляется каждый раз, когда процент увеличивается, но отображается при значении 0 и значении 100, но не показывает 20% или 35%. Я не знаю, что мне нужно сделать, чтобы обновить этот раунд-прогресс



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Поскольку ваше значение правильно обновляется в вашей подписке, но не в вашем шаблоне, при обнаружении изменений не удается зарегистрировать новое значение. Вы можете вручную активировать обнаружение изменений, но не должны.
Я бы посоветовал использовать трубку async. И, таким образом, переписав ваше использование на:
<round-progress #progress
[current] = "current$ | async"
</round-progress>
И:
this.current$ = this.percentageService.percentage$.pipe(
scan((acc = 0, percentage) => acc + percentage)
);
В качестве бонуса вам больше не нужно управлять своей подпиской. Если вам локально нужен «текущий» для других целей, вы можете либо поделиться наблюдаемым (и вам снова придется управлять подписками), либо вы можете добавить кран, который устанавливает локальное значение.
ваше решение не работает! :( значение не обновляется. Теперь я пытаюсь поставить markForCheck и detectChanges после значения подписки, но они не работают одинаково!
Если добавить tap(value => console.info('my new value: ', value) под сканирование (второй параметр канала), вы увидите, что значение обновляется? Если вы в свой шаблон добавляете {{current$ | async}}, то значение не обновляется?
да, в console.info значение обновлено, но в html некорректно обновлено!
Мне действительно любопытно, чем вы занимались в этом компоненте и как выглядит остальной код. Асинхронный конвейер работает даже тогда, когда вы полностью отключили обнаружение углового изменения.
Как компонент Round-Progress использует текущее значение? Что с этим делать? Попробуйте добавить
{{current}}в свой шаблон и посмотрите, обновится ли это значение. Если это так, скорее всего, компонент round-progress просто считывает текущее значение только один раз.