行为主体不更新
behavior subject doesnt udate
我正在尝试使用 LanguageService 中的默认值在 BahaviorSubject 中设置我的语言。我的服务看起来像 thi
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 总是 returns mi 默认值。我以前从未遇到过 BehaviorSubject 的问题,所以我不确定是什么原因造成的。
我已经实现了
this.languageSubscription = this.languageService.getLanguage().subscribe((language: string) => {
console.log(language);
})
在我的一个组件中查看它是否正常,但是......它不是。有什么线索吗?
我认为问题与路由有关,当我更改为 AsyncSubject od 正常 Subject 然后在更改屏幕时我在 getLanguage() 中什么也没有,就像它从未被调用过一样
从任何 providers
数组中删除服务并将装饰器更改为:
@Injectable({providedIn: 'root'})
我正在尝试使用 LanguageService 中的默认值在 BahaviorSubject 中设置我的语言。我的服务看起来像 thi
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 总是 returns mi 默认值。我以前从未遇到过 BehaviorSubject 的问题,所以我不确定是什么原因造成的。
我已经实现了
this.languageSubscription = this.languageService.getLanguage().subscribe((language: string) => {
console.log(language);
})
在我的一个组件中查看它是否正常,但是......它不是。有什么线索吗?
我认为问题与路由有关,当我更改为 AsyncSubject od 正常 Subject 然后在更改屏幕时我在 getLanguage() 中什么也没有,就像它从未被调用过一样
从任何 providers
数组中删除服务并将装饰器更改为:
@Injectable({providedIn: 'root'})