BehaviorSubject在构造函数中未定义

时间:2017-08-14 18:24:03

标签: angular behaviorsubject

我对某些行为主题有疑问。

我有服务:

import{ Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';

@Injectable()
export class BoutonImprimerGriseService {

    boutonImprimerGrise = new BehaviorSubject<boolean>(true);
    boutonImprimerGriseChanged$ = this.boutonImprimerGrise.asObservable();

    boutonMettreAZeroGrise = new BehaviorSubject<boolean>(true);
    boutonMettreAZeroGriseChanged$ = this.boutonMettreAZeroGrise.asObservable();

}

我在一个组件中使用它:

export class GestionCompteursComponent {

boutonImprimerGrise: boolean;
boutonMettreAZeroGrise: boolean;

private _boutonImprimerGriseSubscription: Subscription;
private _boutonMettreAZeroSubscription: Subscription;

constructor(private _boutonImprimerGriseService: BoutonImprimerGriseService)
{
    this._boutonImprimerGriseSubscription = this._boutonImprimerGriseService.boutonImprimerGriseChanged$.subscribe(
        value => {
            console.log(value);
            this.boutonImprimerGrise = value;
        }
    );
    this._boutonMettreAZeroSubscription = this._boutonImprimerGriseService.boutonMettreAZeroGriseChanged$.subscribe(
        value => {
            console.log(value);
            this.boutonMettreAZeroGrise = value;
        }
    );
}
}

问题是当我在构造函数中记录observable的值时,第一个,boutonImprimerGrise总是未定义,即使它在我的服务中设置为true而且我不明白为什么因为另一个是真的......

如果您有任何想法,我会记录下我能找到的所有内容但却一无所获。)

由于

2 个答案:

答案 0 :(得分:0)

一些事情:

我通常喜欢将服务中的变量定义为private,除非您因某些原因不需要它们,另一种方法是使用typescript将boutonImprimerGrise变量定义为BehaviorSubject。 (对两个声明重复)

private boutonImprimerGrise: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);
boutonImprimerGriseChanged$ = this.boutonImprimerGrise.asObservable();

答案 1 :(得分:0)

我发现了问题,只是在同一时间改变两个不同服务的价值......