我想在2个同级组件之间共享数据。
因此,我们要尝试的是取决于组件1中选择的语言,向后端发出http请求,将选择的实际语言传递给从对应表中获取帖子的实际语言。
有什么想法,当我的组件1中的选择选项更改时,如何在我的组件2中选择蓝光?
答案 0 :(得分:1)
由于使用的是ngx-translate
,因此您可以使用其服务来知道选择哪种语言,而不必取决于组件。
@Component({ ... })
export class Component2 implements OnInit {
constructor(private translate: TranslateService) { }
ngOnInit() {
this.translate.onLangChange.subscribe((event: LangChangeEvent) => {
// run your code
});
}
}
从ngx-translate
库的documentation中获取所有事件和属性的列表。
答案 1 :(得分:0)
在这里您可以使用RxJS。因此,您可以提供具有BehaviourSubject的服务。然后,当您更改 1组件中的值时,您将更新此BehaviourSubject值。因此,在 2组件中,您可以收听主题的价值变化,并使用其他语言的tigger服务进行呼叫。
这是服务中的逻辑:
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
@Injectable({
providedIn: 'root',
})
export class LanguageService {
private _languageState: BehaviorSubject<Language> = new BehaviorSubject<Language>();
constructor() {}
setLanguageState(lang: Language) {
this._languageState.next(lang);
}
onChangedLanguageState() {
return this._languageState.asObservable();
}
}
然后在 1个组成部分中,切换语言后,只需将主题更新为this.languageService.setLanguageState(lang).
在 2组件中,以this.languageService.onChangedLanguageState.subscribe(() => {// call http service })