Пожалуйста, оставьте только одну проблему на вопрос здесь, в переполнении стека. Этот ответ будет иметь дело с проблемой № 1, рассмотрите возможность задать отдельные вопросы для других проблем.
Проблема здесь заключается только в вашей методологии ввода / обновления, которая неверна и. Придерживайтесь идиоматизма c D3, который выглядит следующим образом:
const update = this.svg.selectAll('.records')
.data(records);
const enter = update.enter().append('g')
.attr('class', 'records');
Затем вы добавляете новые пути, используя enter
, и обновляете эти пути, используя update
.
. Вы также может разбить группы и создать выбор входа / обновления / выхода для путей напрямую. Это упростит ваш код.
Вот раздвоенный код: https://stackblitz.com/edit/angular-lyd79t?file=src%2Fapp%2Flinechart%2Flinechart.component.ts