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