Angular 角度2:通过服务进行数据传输
我有一个角度服务,它有两个字段,即“itemName”和“quantity” 从我的组件EditentryComponent调用服务方法setItem() 从第二个分量中,我尝试得到第一个分量设置的值,如下所示-Angular 角度2:通过服务进行数据传输,angular,angular-services,Angular,Angular Services,我有一个角度服务,它有两个字段,即“itemName”和“quantity” 从我的组件EditentryComponent调用服务方法setItem() 从第二个分量中,我尝试得到第一个分量设置的值,如下所示- import { Component, OnInit } from '@angular/core'; import { NetworkService } from './../services/network.service'; @Component({ selector: 'a
import { Component, OnInit } from '@angular/core';
import { NetworkService } from './../services/network.service';
@Component({
selector: 'app-edit-receipt-component',
templateUrl: './edit-receipt-component.component.html',
styleUrls: ['./edit-receipt-component.component.css'],
providers : [NetworkService]
})
export class EditReceiptComponentComponent implements OnInit {
constructor(private networkservice : NetworkService) {
}
ngOnInit() {
console.log("Item name = "+this.networkservice.itemName);
}
}
但是我得到了第二个组件的输出“itemname=undefined”。哪里出了问题?通过将服务的两个实例包含在每个组件的提供程序中,您正在创建两个独立的实例
providers: [NetworkService]
您需要使用该服务的单例实例,并且仅在app.module中初始化该服务。因此,请尝试从组件的提供者中删除服务您有两个服务实例。 每个组件一个。您需要在更高级别(例如在模块或父组件中)声明NetworkService
有关更多信息,请参阅:若要拥有singleton服务,必须在模块级别声明它,并将其从组件提供程序声明中删除。在您的例子中,它是由Angular as服务和本地范围初始化的 谢谢你的回答。我从我的单个组件中删除了提供者,并将其放在app.module.ts的提供者中。成功了!!!
import { Component, OnInit } from '@angular/core';
import { NetworkService } from './../services/network.service';
@Component({
selector: 'app-edit-receipt-component',
templateUrl: './edit-receipt-component.component.html',
styleUrls: ['./edit-receipt-component.component.css'],
providers : [NetworkService]
})
export class EditReceiptComponentComponent implements OnInit {
constructor(private networkservice : NetworkService) {
}
ngOnInit() {
console.log("Item name = "+this.networkservice.itemName);
}
}
providers: [NetworkService]