Я столкнулся с проблемой: когда пользователь нажимает кнопку - запускается событие (пункт изменения курса). Но у меня есть нежелательные циклы (бесконечные) для этого события. На мероприятие есть подписка, и я думаю, что проблемы с ним.
Мой ngOnInit
private click$ = new Subject<any>();
ngOnInit() {
this.subscription.add(this.movieUserRateService.searchRates({ movieId: [this.movieId] }).subscribe());
this.click$
.pipe(switchMap((rate) => this.movieUserRateService.getCalculateRate(this.movieId)))
.subscribe(rate => {
this.rateValue = rate;
this.setRate();
});
}
onChange func
onChange(event) {
const rateObj = { value: event.value, movieId: this.movieId };
this.click$.next(rateObj);
}
setRate func
setRate() {
console.log('setRate');
this.myRating.setValue(this.rateValue);
}
Я попробовал другой способ:
onChange(event) {
const rateObj = { value: event.value, movieId: this.movieId };
const subscription = this.movieUserRateService.saveRate(rateObj)
.pipe(
switchMap((rate) => this.movieUserRateService.getCalculateRate(this.movieId))
)
.subscribe(rate => {
this.rateValue = rate;
this.setRate();
subscription.unsubscribe()
});
}
Если я не использую this.setRate (); - Бесконечный цикл исчезает. Но мне нужно использовать setRate (для мониторинга рейтинга изменений).
Что я делаю не так?