У меня есть дочерний компонент, который принимает значение @Input из выпадающего списка родительского компонента. У этого значения есть массив объектов, которые я хочу передать в качестве источника данных в таблицу, поэтому мне нужно создать некоторое Observable для поддержки этого и изменить его при изменении значения @Input и т. Д. Я знаю, что это основнойвопрос, но все еще оборачиваюсь вокруг парадигмы углового дизайна.
Учитывая значение @Input как таковое:
@Input() parentObject: ParentObject
Я пытался ссылаться на значение напрямую, как:
rowData = this.parentObject._rows;
Это прерывается, потому что он заполнен асинхронно, поэтому во время выполнения parentObject изначально не определен.
Я пытался:
ngOnChanges(change: SimpleChanges){
if (changes.parentObject.currentValue){
rowData = changes.parentObject.currentValue._rows;
}
}
Это прерывается, потому что _rows является массивом, а не Observable. Я полагаю, что я мог бы обернуть _rows в Observable, когда я установил его, но это выглядит глупо.
Обратите внимание, что я не пытаюсь передать значение обратно родителю, просто потреблять его в таблице в дочернем элементесоставная часть. Я также экспериментировал с темой, которая компилируется и работает нормально, но по какой-то причине таблица не получает обновленные данные. Я включил этот код здесь, чтобы быть более понятным, что я делаю:
rowData = new Subject<Row[]>();
ngOnChanges(change: SimpleChanges){
if (changes.parentObject.currentValue){
this.rowData.next(changes.parentObject.currentValue._rows);
}
}
и в моем .html:
<ag-grid-angular
style="width: 500px; height: 500px;"
class="ag-theme-balham"
[rowData]="rowData | async"
[columnDefs]="columnDefs">
</ag-grid-angular>
Я уверен, что есть какой-то действительно простой способделать это взаимодействие, которое я не рассматриваю.