[英]Angular 10 - Sharing data between sibling components
我想在 2 个兄弟组件之间共享数据。
因此,我们要做的是根据组件 1 中选择的语言向后端发送 http 请求,传递所选的实际语言以从对应表中获取帖子。
知道如何在组件 1 中的选择选项更改时在组件 2 中选择语言吗?
由于您使用的是ngx-translate
,您可以使用它的服务来了解选择了哪种语言,而不是取决于您的组件。
@Component({ ... })
export class Component2 implements OnInit {
constructor(private translate: TranslateService) { }
ngOnInit() {
this.translate.onLangChange.subscribe((event: LangChangeEvent) => {
// run your code
});
}
}
查看ngx-translate
库的文档以ngx-translate
所有事件和属性的列表。
在这里你可以使用 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 })
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.