У меня есть приложение, в котором мне нужно передать данные от дочернего компонента к родительскому компоненту. Данные - это объект.
Проблема, с которой я столкнулся, заключается в том, что данные передаются по ссылке, что означает, что при изменении данных модели моего дочернего компонента, также изменяется массив родительских компонентов (this.cashEntryItems).
Я попытался нажать на console.log (), но все равно не повезло.
Я получаю данные о событии правильно, но не могу передавать данные только по значению (без связи с объектом дочернего компонента)
Вот результат моей консоли -
Console.log -> inside Parent Component.ts file
Input From Child Component
CashEntryItem {CompOperarator: {…}, description: "test", serviceType: ServiceType, amount: 100, …}
Before Push this.cashEntryItems -
[]
After Push this.cashEntryItems
[CashEntryItem]
0: CashEntryItem {CompOperarator: {…}, description: null, serviceType: ServiceType, amount: null, …}
length: 1
__proto__: Array(0)
Я вставил свой код ниже.
Дочерний компонент -
Дочерний компонент Component.html
<form #itemForm="ngForm" (ngSubmit)="onSubmit()" *ngIf="isPageLoaded">
Дочерний Component.ts
onSubmit() {
this.formSubmit.emit(this.cashEntryItem);
}
Родительский компонент
Родительский компонент.html
<app-child-component (formSubmit)="addItem($event)"></app-child-component>
Родительский компонент Component.ts
addItem(newItem: CashEntryItem) {
this.cashEntryItems.push(newItem);
this.cashEntryItems = this.cashEntryItems.slice(); //one suggestion from a blog - Not working
}
this.formSubmit.emit(JSON.parse(JSON.serialize(this.cashEntryItem)))
- person David   schedule 15.04.2020