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

时间:2017-09-04 22:32:20

标签: angular cordova

我正在尝试在我的MOBILE POC(Cordova2 / Angular2)中创建Cart功能。 我已经为组件之间的共享数据创建了Service。我通过组件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);
    }
}  

组件A:

addItemToCart(item) {
    this.cartService.SetCart(item);
    //this.cartService.vijayCart.push(item);
    this.cartLenth = this.cartService.GetCart().length;
}

组件B:

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

1 个答案:

答案 0 :(得分:1)

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

 providers: [AppService],

模块的整个代码

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule
  ],
  providers: [AppService],
  bootstrap: [AppComponent]
})
export class AppModule { }

如果您想了解更多细节并希望了解如何在两个模块之间共享数据,您可以看到share data between tow module

行为主题 行为主题是在组件之间共享数据的更好方式,它可以在一个服务中发生数据更改时处理未来的数据共享,并通知其他服务。

详细了解您可以看到此sharing data between components