【发布时间】:2021-11-09 18:30:38
【问题描述】:
我正在尝试使用 LanguageService 中的默认值在 BahaviorSubject 中设置我的语言。我的服务看起来像这样
import {Injectable} from '@angular/core';
import * as globals from '../../../environments/globals';
import {BehaviorSubject} from 'rxjs';
@Injectable()
export class LanguageService {
languages = globals.languages;
language = new BehaviorSubject<string>(this.languages.polish.code);
setLanguage(code: string) {
console.log(code)
this.language.next(code);
}
getLanguage() {
return this.language.asObservable();
}
}
它由 SharedModule 提供,然后由我拥有的每个组件导入。 问题是使用 setlangueage 我可以看到正确的代码 Im 设置,但 getLanguage 总是返回 mi 默认值。我以前从未遇到过 BehaviorSubject 问题,所以我不确定可能是什么原因。
我已经实现了
this.languageSubscription = this.languageService.getLanguage().subscribe((language: string) => {
console.log(language);
})
在我的一个组件中查看它是否正常,但是......它不是。有什么线索吗?
我认为问题与路由有关,当我更改为 AsyncSubject od normal Subject 然后在更改屏幕时,我在 getLanguage() 中什么也没有,就像它从未被调用过一样
【问题讨论】:
-
@Injectable()你的LanguageService是单身人士吗? -
我希望它是,因为它是整个应用程序的一项服务
标签: angular typescript rxjs