У меня есть класс Row
, который будет показан на странице, и дочерний элемент Rows
будет показан под вложенным родительским элементом Row
. Максимальная глубина вложенных рядов отсутствует.
export class Row {
constructor(
public name: string,
public id: number,
public parentId: number,
) {}
}
все Rows
хранятся и управляются в пределах RecipeService
, на который RowComponent
имеет подписку.
import { Component, OnInit, Input } from '@angular/core';
import { Field } from 'src/app/classes/field';
import { Row } from 'src/app/classes/row';
import { RecipeService } from 'src/app/services/recipe.service';
@Component({
selector: 'app-recipe-row',
template: `
<div class="col">
<div class="row" height="30px" *ngFor="let row of rows.filter(r => r.parentId = thisRow.parentId); let i = index">
<app-recipe-row [thisRow]="row"></app-recipe-row>
</div>
</div>
`,
styleUrls: ['./recipe-row.component.css']
})
export class RecipeRowComponent implements OnInit {
rows: Row[];
fields: Field[][];
@Input() thisRow: Row;
constructor(public rs: RecipeService) { }
ngOnInit(): void {
this.loadRows();
this.loadFields();
}
loadRows(): void {
this.rs.rowO$
.subscribe(
rows => this.rows = rows
);
}
loadFields(): void {
this.rs.fieldO$
.subscribe(
fields => this.fields = fields
);
}
}
Эта проблема, которая возникает у меня (кроме, вероятно, неправильного использования rx js), заключается в том, что привязки не могут содержать назначения, поэтому я не уверен, как лучше всего каскадировать эти дочерние строки