Angular数组可观察对象未被更新。

huangapple go评论83阅读模式
英文:

angular array observable does not get updated

问题

HTML中的内容无需翻译,但是你提供的HTML代码中包含一些HTML实体编码,需要还原成正常的HTML标记。以下是已翻译和修复的HTML代码:

  1. <small>{{(selectedLangs$ | async)}}</small>

请注意,HTML代码中的特殊字符已被还原,现在可以正确显示。如果数组的值发生更改,HTML中的小标签内容应该会相应更新。

英文:

I have ts code as below

  1. selectedLangs : string[] = []
  2. selectedLangs$: Observable&lt;string[]&gt; = of(this.selectedLangs);
  3. ngOnInit(){
  4. this.form.get( &#39;languages&#39; ).valueChanges
  5. .pipe(
  6. takeUntil( this._unSubscribeAll ),
  7. tap( langs =&gt; {
  8. this.selectedLangs = [];
  9. if( langs ) {
  10. langs.forEach( ( lang: IOption ) =&gt; {
  11. if( this.selectedLangs.find( f =&gt; f === lang ) === undefined ) {
  12. this.selectedLangs.push( lang )
  13. }
  14. } )
  15. }
  16. } )
  17. )
  18. .subscribe();
  19. }

html

  1. &lt;small&gt;{{(selectedLangs$ | async)}}&lt;/small&gt;

Should my html be updated if I am changing the value of the array?

答案1

得分: 1

这是您想要做的吗?

  1. selectedLangs$: BehaviorSubject<string[]> = new BehaviorSubject([]);
  2. ngOnInit() {
  3. this.form.get('languages').valueChanges.pipe(
  4. takeUntil(this._unSubscribeAll),
  5. tap((langs: IOption[]) => {
  6. const uniqueLangs = [...new Set(langs)];
  7. this.selectedLangs$.next(uniqueLangs);
  8. })
  9. ).subscribe();
  10. }
英文:

Is this what you want to do?

  1. selectedLangs$: BehaviorSubject&lt;string[]&gt; = new BehaviorSubject([]);
  2. ngOnInit() {
  3. this.form.get(&#39;languages&#39;).valueChanges.pipe(
  4. takeUntil(this._unSubscribeAll),
  5. tap((langs: IOption[]) =&gt; {
  6. const uniqueLangs = [...new Set(langs)];
  7. this.selectedLangs$.next(uniqueLangs);
  8. })
  9. ).subscribe();
  10. }

huangapple
  • 本文由 发表于 2023年2月23日 20:35:21
  • 转载请务必保留本文链接:https://go.coder-hub.com/75544920.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定