карта в массиве не работает в событии ngOnChange Angular 5

Я новичок в Angular, и это мое первое приложение. У меня есть родительский компонент, который получает данные из API с помощью службы. С ответом службы я создаю массив и передаю его как атрибут дочернему компоненту. В дочернем компоненте у меня есть следующее событие ngOnChange

ngOnChanges(changes: any) {
    console.log("Mode total in mode", this.modeTotal);
    this.modeTotal.map(mode => {
      console.log("For each");
      this.doughnutChartLabels.push(mode.name);
      this.doughnutChartData.push(mode.total);
      console.log(`Loop inside onChange Name: ${mode.name} and Total: ${mode.total}`);
    });
    console.log("DoughnutChartLabels", this.doughnutChartLabels);
    console.log("DoughnutChartData", this.doughnutChartData);
}

Проблема, с которой я столкнулся, заключается в том, что консоль над и под функцией карты работает, печатая содержимое modeTotal, doughnutChartLabels и doughnutChartData, но не строка внутри функции карты. И в modeTotal есть массив данных, которые я ожидаю вернуть.

Что мне не хватает?

Примечание. Я помещаю данные в modeTotal из другого компонента, который получает данные от API. ModeTotal не обновляется, даже когда в него вводятся новые данные.


person Sp Sesha    schedule 27.01.2018    source источник
comment
какая строка не печатается?   -  person Sajeetharan    schedule 27.01.2018
comment
Это заявление console.log(`Loop inside onChange Name: ${mode.name} and Total: ${mode.total}`);   -  person Sp Sesha    schedule 27.01.2018
comment
можете ли вы предоставить демонстрацию stackblitz   -  person Sajeetharan    schedule 27.01.2018
comment
может быть, вы хотите использовать .forEach? developer.mozilla.org/en-US/ документы/Интернет/JavaScript/Справочник/   -  person Ziv Weissman    schedule 27.01.2018
comment
Пробовал и с forEach. Не повезло.   -  person Sp Sesha    schedule 27.01.2018
comment
можете ли вы показать, что вы видите внутри console.log(Mode total in mode, JSON.stirngify(this.modeTotal));   -  person Sajeetharan    schedule 27.01.2018
comment
Я получаю пустые скобки, когда я упорядочиваю modeTotal, но если я печатаю его как объект, я получаю Mode total in mode [] 0: Object { total: 650, name: "Credit Cards" } 1: Object { total: 1000, name: "Paytm" } 2: Object { total: 960, name: "Debit Card" } length: 3 __proto__: Array []   -  person Sp Sesha    schedule 27.01.2018
comment
он не должен быть пустым, если у вас есть данные   -  person Sajeetharan    schedule 27.01.2018
comment
Он показывает пустой. Я даже пытался напечатать переменную изменений из аргумента, у которого есть данные в поле currentValue, но когда я попытался напечатать длину currentValue, он возвращает 0. но у currentValue данные такие же, как и в предыдущем комментарии.   -  person Sp Sesha    schedule 27.01.2018
comment
Пожалуйста, проверьте скриншот консоли и код по ссылкам ниже ibb.co/mNuBuG ibb.co/jHuBuG   -  person Sp Sesha    schedule 27.01.2018
comment
Пожалуйста, отредактируйте свой вопрос и включите свой полный код, родительские компоненты и то, как ведут себя ваши данные.   -  person Mike Tung    schedule 27.01.2018


Ответы (1)


Событие изменения не произойдет в массиве, когда в него будут помещены новые данные, поскольку переменная ссылается на тот же объект. Попробуйте добавить локальную переменную для отслеживания push-изменений.

person shankara narayanan    schedule 03.02.2018