【问题标题】:BehaviorSubject undefined in constructor构造函数中未定义的 BehaviorSubject
【发布时间】:2017-08-14 18:24:03
【问题描述】:

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

我有一个服务:

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;
        }
    );
}
}

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

我记录了所有我能找到的东西,但一无所获,如果您有任何想法,欢迎您:)

谢谢

【问题讨论】:

    标签: angular behaviorsubject


    【解决方案1】:

    几件事:

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

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

    【讨论】:

    • 感谢您的建议。
    【解决方案2】:

    我发现了问题,就是同时在两个不同的服务中改变值...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多