我有2个组成部分:父母和孩子。
当我单击按钮(来自父组件)并为数组(子组件中)中的每个对象调用函数generate()
时,我想将一个数组从父对象发送到子对象。
我已经用@Output() EventEmitter
尝试过一些方法,但是我不确定这种方法。
父组件
export class ViewCalendarsComponent implements OnInit {
@ViewChildren(MonthHeaderComponent) months: any[];
@Output() monthsList: EventEmitter<Date[]> = new EventEmitter();
selectedMonths: any[];
test() {
this.monthsList.emit(this.selectedMonths);
}
}
子组件
export class MonthHeaderComponent implements OnInit {
ngOnInit() {
}
generate(date: Date) {
// code here....
}
show() {
for (let i = 0; i <= monthsList.length; i++)
{
generate(monthsList[i]);
}
}
}
和父html
<button class="primary" (click)="test()"> Show </button>
<div class="right view-calendar">
<child *ngFor="let selectedMonth of selectedMonths" [monthsList]="show($event)"></child>
</div>
如何发送该数组并将其用作方法中的参数?
答案 0 :(得分:1)
只需使用@input代替输出。输入值被修改后,使用ngOnChanges
来捕获更改。
child component
export class MonthHeaderComponent implements OnInit {
@Input monthsList: Date[]
ngOnChanges(){
// catch changes
}
}
在父模板中,传递数组。
<child *ngFor="let selectedMonth of selectedMonths" [monthsList]="monthArr"></child>