将数组从父组件传递到子角度

时间:2018-12-04 14:05:30

标签: html angular

我有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>

如何发送该数组并将其用作方法中的参数?

1 个答案:

答案 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>