Поскольку ваше значение корректно обновляется в вашей подписке, но не в шаблоне, обнаружение изменений не может зарегистрировать новое значение.Вы можете вручную активировать обнаружение изменений, но не должны.
Я бы предложил использовать async
трубу.И, таким образом, переписав свое использование:
<round-progress #progress
[current]="current$ | async"
</round-progress>
И:
this.current$ = this.percentageService.percentage$.pipe(
scan((acc = 0, percentage) => acc + percentage)
);
В качестве бонуса вам больше не нужно управлять своей подпиской.Если вам локально нужен «текущий» для других целей, вы можете либо поделиться наблюдаемой (и снова управлять подписками), либо добавить сигнал, который устанавливает локальное значение.