页面/组件之间的Angular2共享变量或全局变量

页面/组件之间的Angular2共享变量或全局变量,angular,cordova,Angular,Cordova,我正在尝试在我的移动POC Cordova2/Angular2中创建购物车功能。 我已经创建了用于在组件之间共享数据的服务。我正在通过组件A添加项目,并尝试从组件B读取内容。但我在组件B中没有看到这些项目。我应该在服务中添加什么 import { Injectable } from '@angular/core'; @Injectable() export class CartService { private vijayCart: Array<any> =

我正在尝试在我的移动POC Cordova2/Angular2中创建购物车功能。 我已经创建了用于在组件之间共享数据的服务。我正在通过组件A添加项目,并尝试从组件B读取内容。但我在组件B中没有看到这些项目。我应该在服务中添加什么

import { Injectable  } from '@angular/core';    
@Injectable()    
export class CartService {
    private vijayCart: Array<any> = [];
    GetCart() {
        return this.vijayCart;
    }
    SetCart(item) {
        this.vijayCart.push(item);
    }
}  
B部分:

  ngOnInit(): void {
      this.cartSer = this.cartService.GetCart();
  }

一切都是正确的您缺少的一件事是为这两个组件提供服务。 您需要在模块级别共享服务,才能说我的服务是在这两个组件之间共享的

 providers: [AppService],
模块的全部代码

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule
  ],
  providers: [AppService],
  bootstrap: [AppComponent]
})
export class AppModule { }
如果您想更详细地了解如何在两个模块之间共享数据,您可以看到

行为主体 行为主体是在组件之间共享数据的更好方式,它处理将来的数据共享。当一个服务中发生数据更改时,它会通知另一个服务


要查看详细信息,您可以看到这一点

解决方案之一是在您的服务中创建一个BehaviorSubject和observable,然后在两个组件中订阅它。或者使用@Input/@Output和EventEmitter来处理您的操作。看看BehaviorSubject-您使用的是Ionic吗?这个问题问了很多次,有人能将其标记为重复吗?您如何在模块之间共享,这种方法不起作用。
@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule
  ],
  providers: [AppService],
  bootstrap: [AppComponent]
})
export class AppModule { }