在Angular 5中,如何轻松地为同一组件类型的两个实例共享一个服务的单个实例?

时间:2018-08-31 18:15:47

标签: angular typescript

在Angular 5中,您如何轻松地为同一组件类型的两个实例共享一个服务的单个实例?

例如,假设我有一个NavMenuComponent,其中包含NavMenuCartComponent的两个实例,如下所示,位于nav-menu.component.html

  <!-- Cart component instance 1-->
  <nav-menu-cart class="toolbar-item" *ngIf="auth.isAuthenticated()"></nav-menu-cart>


 <!-- Cart component instance 2-->
  <nav-menu-cart class="toolbar-item" *ngIf="auth.isAuthenticated()"></nav-menu-cart>

每个NavMenuCartComponent都包含一个购物车的实例,如下所示

  navMenuCart: ICart = {
buyerId: '',
items: []};

当我在一个实例中更新navMenuCart时,我希望另一个实例也获得该更新。这是通过共享服务完成的吗?本质上,我试图使每个实例(在本例中为NavMenuCartComponent的2个实例)内的状态保持同步。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我发现的简单解决方案是在服务中实际创建接口的实例,如下所示

{parents': <teamDrive_folderId>}

在该服务中创建一个函数以返回实例

    export class CartService  {
  cartUrl = environment.cartUrl;

  cart: ICart = {
    buyerId: '',
    items: []
  };

}

然后在任何一个组件内,将购物车的实例设置为服务的实例,如下所示

  getCart() {
return this.cart;

}