Мне было интересно, каков наилучший подход, когда у вас есть родительский и дочерний компоненты, а дочерний компонент содержит входные данные с событиями фокусировки / размытия, о которых родитель хотел бы знать.
Я хочу, чтобы родитель также предоставил любые данные, которые он мог бы затем использовать, когда указанный вывод возвращает значение обратно.
Например, если у меня была промежуточная сумма по родительскому элементу и требуется фокус / размытие дочернего элементаСобытия для достижения этой общей суммы я бы сделал следующее:
Шаблон родительского компонента:
<div>Total: {{ total }}</div>
<app-child (focusEvent)="total = total + $event" [outputVals]="{focus: 10, blur: -3}"></app-child>
<app-child (focusEvent)="total = total + $event" [outputVals]="{focus: 2, blur: -1}"></app-child>
Дочерний компонент:
import { Component, OnInit, EventEmitter, Output, Input } from '@angular/core';
@Component({
selector: 'app-child',
template:
`<div>
<label for="input1">Focus adds {{ focusVal }}. Blur adds {{ blurVal }}</label>
<input type="text" id="input1" (focus)="focusEvent.emit(focusVal)" (blur)="focusEvent.emit(blurVal)" />
</div>`,
styleUrls: ['./child.component.css']
})
export class ChildComponent implements OnInit {
@Output() focusEvent = new EventEmitter<any>();
@Input() outputVals: {focus: any, blur: any};
focusVal: any;
blurVal: any;
constructor() { }
ngOnInit() {
this.focusVal = this.outputVals.focus;
this.blurVal = this.outputVals.blur;
}
}
Вот пример, приведенный выше в рабочей демонстрации: https://stackblitz.com/edit/angular-u1vy6f
Итак, мой вопрос здесь, это правильный подход или есть лучшийспособ