Javascript 计时问题:如何从angular2服务获取变量的正确值
在Angular2服务中,我在replace函数中提高变量的值 我可以从另一个组件访问该值,但我总是获得起始值 所以我总是得到->0。如果我在服务的构造函数中更改另一个值,我就可以获得它,但这不是我所需要的 这是我的服务。ts:Javascript 计时问题:如何从angular2服务获取变量的正确值,javascript,angular,angular-services,Javascript,Angular,Angular Services,在Angular2服务中,我在replace函数中提高变量的值 我可以从另一个组件访问该值,但我总是获得起始值 所以我总是得到->0。如果我在服务的构造函数中更改另一个值,我就可以获得它,但这不是我所需要的 这是我的服务。ts: export class MyService { colletion: Object = { foo: [], bar: [], somethig: [] } counter: any = 0; constructor() {
export class MyService {
colletion: Object = { foo: [], bar: [], somethig: [] }
counter: any = 0;
constructor() {
getSomeData();
}
getSomeData() {
//Do stuff to get some data from server, then call:
cleanStrings();
}
cleanStrings() {
for (var i = 0; i < result.length; i++) {
this.colletion[key][i] = key + " " + result[i].expression
.replace(/string/g, match => {
//HERE I RAISE THE VALUE
this.counter++;
return 'FIELD-' + this.counter + '" />';
});
}
}
}
我必须改变什么,才能在这之后得到正确的值;已达到其最大值?这是RxJS的作业: 更新您的服务:
export class MyService {
counter: number = 0;
...
counterSubject: BehaviorSubject<number> = new BehaviorSubject(this.counter);
subscribeCounter = (s:any) => {
this.counterSubject.asObservable().subscribe(s); //subscription to the next counter values
this.counterSubject.next(this.counterSubject.getValue()); //get the current value at subscription
}
...
getSomeData() {
//Do stuff to get some data from server, then call:
cleanStrings();
counterSubject.next(this.counter);
}
...
}
不要直接吃掉服务的价值;创建一个绑定来动态更新。你有一个例子吗?请你改进一下你的答案好吗?我不明白。你的意思是要为此实现setter和getter吗?非常感谢。谢谢!工作表现:-
export class MyService {
counter: number = 0;
...
counterSubject: BehaviorSubject<number> = new BehaviorSubject(this.counter);
subscribeCounter = (s:any) => {
this.counterSubject.asObservable().subscribe(s); //subscription to the next counter values
this.counterSubject.next(this.counterSubject.getValue()); //get the current value at subscription
}
...
getSomeData() {
//Do stuff to get some data from server, then call:
cleanStrings();
counterSubject.next(this.counter);
}
...
}
export class AppComponent implements OnInit {
collection: Object = {};
counter: number;
constructor(private _myService: MyService) {
}
ngOnInit() {
_myService.subscribeCounter((c) => {
this.counter = c;
console.log(this.counter); //incremented
});
}
...
}