Создайте два @Output
свойства для дочернего компонента, а затем используйте их следующим образом:
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'app-key-value',
templateUrl: './key-value.component.html',
styleUrls: ['./key-value.component.css']
})
export class KeyValueComponent implements OnInit {
@Output() addClicked: EventEmitter<any> = new EventEmitter<any>();
@Output() removeClicked: EventEmitter<any> = new EventEmitter<any>();
@Input() elements;
key: '';
value: '';
constructor() { }
ngOnInit() {
}
addElemToParentArray(event) {
this.addClicked.emit();
}
rmElemFromParentArray(element) {
this.removeClicked.emit(element);
}
}
Прослушайте эти Output
хуки в вашей ParentComponent TemplatE:
<app-key-value
[elements]="values"
(removeClicked)="remove($event)"
(addClicked)="addElement()">
</app-key-value>
Также в дочернем компоненте используйте шаблон следующим образом:
<button (click)="addElemToParentArray($event)">Add</button>
<div *ngFor="let element of elements">
<label>key</label>
<input [(ngModel)]="element.key" type="text"/>
<label>value</label>
<input [(ngModel)]="element.value" type="text"/>
<button (click)="rmElemFromParentArray(element)">Remove</button>
</div>
Вот Обновленный StackBlitz для вашей ссылки.