У меня небольшая проблема с компонентом, который не обновляется должным образом. Существует компонент, предоставляющий функцию publish
. Эта функция вызывает generateDownload
со списком объектов. Теперь getDrawing
называется. Данные, возвращаемые sscmData.getDrawing
, обновляют представление, и это работает как шарм.
export class DrawingComponent {
...
getDrawing(distance: DistanceSplit, reloadPredrawSkaters?: boolean): Observable<any> {
return this.sscmData.getDrawing(distance.ID, distance.distance).pipe(
map((response: Drawing) => {
...
do some things
...
})
)
}
publish(distances: DistanceSplit[]) {
this.generateDownload(distances).subscribe(tabledata => {
console.log(tabledata)
})
}
generateDownload(list: DistanceSplit[]): Observable<any> {
return from(list).pipe(
concatMap((distance: DistanceSplit, index: number) => {
return this.getDrawing(distance).pipe(
tap(() => {
this.changeDetectorRef.detectChanges();
console.log(this.propress);
this.propress++;
}),
map(res => {
let tabledata = ...
return tabledata;
})
);
})
);
}
}
Моя проблема propress
, это простая переменная, и я хочу видеть в представлении компонента текущее значение {{ propress }}
. Но значение отображается только тогда, когда наблюдаемое полностью обработано. Таким образом, он всегда показывает длину списка, но не текущее значение.
Я ожидал увидеть возрастающее значение, например. 1...2...3...4... и т.д. Как заставить его работать?
detectChanges
, если вы не используете обнаружение изменений onPush, и даже если вы используете, есть лучшие способы сделать это. - person wlf   schedule 20.08.2020detectChanges
был просто отчаянной попыткой заставить его работать... Код выглядит точно так же, как мой, но в моей среде он не будет работать :-( - person Lars   schedule 20.08.2020tap
? порядковые номера или прыжки как значения в html? - person wlf   schedule 20.08.2020delay
вgetDrawing
, как в stackblitz, чтобы проверить это. - person wlf   schedule 20.08.2020delay
дайте решение. Безdelay
представление переходит от 0 к концу. Кроме того, я использовалmergeMap
вместоconcatMap
, как вы. Теперь вроде работает :-) Большое спасибо! - person Lars   schedule 20.08.2020delay
также можно установить на0
, но его нужно установить ... странно - person Lars   schedule 20.08.2020