我有一个服务:
@Injectable()
export class MyService implements IMyService {
myServiceArray: Array<string> = ["hi", "hello", "yoyo"];
}
此服务被注入(inject)到组件中,该组件使用 ngModel 更新字符串数组。当我尝试从组件或服务打印数组时,一切正常(也就是使用 ngModel 更新数组)。
我也在另外1个@Inject这样的Service。
@Injectable()
export class AnotherService implements IAnotherService {
constructor(public myService: MyService) {
}
printValues() {
console.log(this.myService.myServiceArray);
}
}
当我调用 printValues() 时,即使我用模型更新了数组的值,也会打印 ["hi", "hello", "yoyo"]!
我做错了什么?
编辑:
该组件的代码如下。
@Component({
selector: 'app-root',
providers: [MyService],
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppCustomerData implements IAppCustomerData {
constructor(public myService: MyService) {
}
}
最佳答案
如果您有多个服务实例,您必须确保注入(inject)了相同的服务实例,每个实例中都有自己的数组。
我会尝试使用本地存储来存储服务中的数据,而不是你可以有多个实例并且每个实例都可以编辑或返回相同的值: How to store token in Local or Session Storage in Angular 2?
也许这可以解决您的问题: How do I create a singleton service in Angular 2?
关于javascript - Angular2 服务的现场问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42271982/