Индикатор выполнения не обновляет угловой

Допустим, у меня есть компонент 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 отображается правильное приращение, но мое процентное значение не увеличивается на индикаторе выполнения. Кто-нибудь может мне помочь?

Как компонент Round-Progress использует текущее значение? Что с этим делать? Попробуйте добавить {{current}} в свой шаблон и посмотрите, обновится ли это значение. Если это так, скорее всего, компонент round-progress просто считывает текущее значение только один раз.

Arne 21.11.2018 16:09

@Arne, я поставил {{current}}, и значение не обновляется каждый раз, когда процент увеличивается, но отображается при значении 0 и значении 100, но не показывает 20% или 35%. Я не знаю, что мне нужно сделать, чтобы обновить этот раунд-прогресс

Doflamingo19 21.11.2018 16:18
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
807
1

Ответы 1

Поскольку ваше значение правильно обновляется в вашей подписке, но не в вашем шаблоне, при обнаружении изменений не удается зарегистрировать новое значение. Вы можете вручную активировать обнаружение изменений, но не должны.

Я бы посоветовал использовать трубку async. И, таким образом, переписав ваше использование на:

<round-progress #progress
    [current] = "current$ | async"
</round-progress>

И:

this.current$ = this.percentageService.percentage$.pipe(
  scan((acc = 0, percentage) => acc + percentage)    
);

В качестве бонуса вам больше не нужно управлять своей подпиской. Если вам локально нужен «текущий» для других целей, вы можете либо поделиться наблюдаемым (и вам снова придется управлять подписками), либо вы можете добавить кран, который устанавливает локальное значение.

ваше решение не работает! :( значение не обновляется. Теперь я пытаюсь поставить markForCheck и detectChanges после значения подписки, но они не работают одинаково!

Doflamingo19 21.11.2018 17:20

Если добавить tap(value => console.info('my new value: ', value) под сканирование (второй параметр канала), вы увидите, что значение обновляется? Если вы в свой шаблон добавляете {{current$ | async}}, то значение не обновляется?

Arne 21.11.2018 17:26

да, в console.info значение обновлено, но в html некорректно обновлено!

Doflamingo19 21.11.2018 17:36

Мне действительно любопытно, чем вы занимались в этом компоненте и как выглядит остальной код. Асинхронный конвейер работает даже тогда, когда вы полностью отключили обнаружение углового изменения.

Arne 21.11.2018 19:16

Другие вопросы по теме