Я пытаюсь передать массив дочернему компоненту. Массив определяется в методе subscribe ловушки жизненного цикла onInit родительского компонента.
Родительский компонент:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'selector-parent',
templateUrl: 'parent.component.html'
})
export class ParentComponent implements OnInit {
array: [];
constructor() { }
ngOnInit() {
this.appDataService.getValues()
.subscribe(
value => {
value.item
.filter(loaded => !this.array.some(existing => existing.key === loaded.key))
.forEach(loaded => { this.array.push(loaded) })
}
)
}
}
Дочерний компонент:
import { Component, OnInit } from '@angular/core';
@Component({
selector: '[selector-child]',
templateUrl: 'child.component.html'
})
export class ChildComponent implements OnInit {
@Input() inputArray: [];
constructor() { }
ngOnInit() {
console.info(this.inputArray)
}
}
Привязка: <tr selector-child [inputArray] = "array"></tr>
К сожалению, журнал консоли на inputArray не определен. Я пробовал использовать ngOnChanges в дочернем компоненте, но по какой-то причине он не распознает изменение в родительском компоненте. Подумайте об использовании службы для передачи данных, если нет более простого способа решить проблему.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я не вижу ngOnChanges в вашем дочернем компоненте. Кроме того, убедитесь, что вы делаете это так, как указано в документации по angular. https://angular.io/guide/component-interaction#intercept-input-property-changes-with-ngonchanges
Вам необходимо инициализировать массив в родительском компоненте:
array: [] = [];