Angular 11 RxJS:如何将对象添加到可观察对象的嵌套列表中?

Joh*_*ler 0 rxjs angular rxjs-observables

假设我有一个对象的可观察对象,其形状为:

export interface Invoice {
  fdInvoiceID: number;
  fdInvoiceNumber: string;
  fdCustomerID: number;
  fdTotal: number
  invoiceLineItems: InvoiceLineItem[];
Run Code Online (Sandbox Code Playgroud)

如果用户添加了一个行项目,我如何将其添加到 observable 的 invoiceLineItems 列表中?

我有一个观察员发票 $ 并且我在模板中使用 async

*ngIf="invoices$ | async as invoices"

Run Code Online (Sandbox Code Playgroud)

将新 lineItem 保存到数据库后,我想将其添加到 invoices$.invoiceLineItems 并通过异步显示。

Vug*_*yev 5

我相信你不应该为此使用 observable。如果其数据更改存储为变量并将订阅的数据传递给输入。

<div *ngFor="let invoice of invoices"
 [items]="invoice.items"> </div>
Run Code Online (Sandbox Code Playgroud)

更新:

您可以组合更改数据的 event 和 invoices$,如下所示:

public get invoices$(): Observable<Invoice[]> {
 return combineLatest([eventThatChangesItems$, invoices$]).pipe(
   map(([invoiceLineItems, invoices]) => invoices.map(invoice) => 
     invoice.invoiceLineItems = invoiceLineItems);
   );
}
Run Code Online (Sandbox Code Playgroud)