Я пытаюсь максимально использовать асинхронный канал, потому что слышу, что это лучшая практика, так как он управляет наблюдаемыми для вас подписками.
Очень упрощенная версия моего приложения выглядит примерно так:
export class OrderDetailComponent implements OnInit {
order$: Observable<Order>;
lineItems$: Observable<LineItem>;
constructor(
private orderService: OrderService,
private lineItemService: LineItemService
) {}
ngOnInit() {
this.order$ = this.getOrders();
this.lineItems$ = this.getLineItems();
}
private getOrders(): Observable<Order> {}
private getLineItems: Observable<LineItem[]>;
}
И тогда шаблон выглядит примерно так:
<div *ngIf="order$ | async; let order">
Order#: {{order.ID}}
Line Items
<div *ngIf="lineItems$ | async; let lineItems">
<div *ngFor="let li of lineItems">
<app-lineitem-card [lineItem]="li"></app-lineitem-card>
</div>
</div>
Order Summary:
Total: {{order.Total}}
</div>
Очевидно, что это упрощено, но дело в том, что порядок нужен почти везде на странице, поэтому я использую асинхронныйтруба на внешнем div.Это прекрасно работает при загрузке первой страницы, но я сталкиваюсь с ситуацией, когда я обновляю часть порядка, которая на самом деле затрагивает только очень небольшую часть страницы, скажем, order.Total.Я знаю, что могу сделать следующее, чтобы обновить порядок:
this.order$ = this.getOrder()
, но это вызывает повторную инициализацию всех моих компонентов (из-за ngIf). Как правильно обрабатывать этот сценарий?