Angular 从BehaviorSubject中删除重复项

Angular 从BehaviorSubject中删除重复项,angular,duplicates,lodash,subscribe,behaviorsubject,Angular,Duplicates,Lodash,Subscribe,Behaviorsubject,我有一个角度分量,它得到一个行为主体数组作为输入,可以在外部改变。组件应该显示这个数组,并根据数组中的内容更新组件视图。该组件还订阅了BehaviorSubject上的更改,因此它应该专门从数组中自动选择“enabled”对象。我还想检查此阵列中是否存在重复项,并自动将其删除。在找到重复项后,我尝试调用subscribe中的.next(),但即使数组看起来正确,视图也不能正确反映。它显示阵列而不删除重复项。不知道我的方法是否正确?我做错了什么 在我的ngOnInit()函数中有: this.th

我有一个角度分量,它得到一个行为主体数组作为输入,可以在外部改变。组件应该显示这个数组,并根据数组中的内容更新组件视图。该组件还订阅了BehaviorSubject上的更改,因此它应该专门从数组中自动选择“enabled”对象。我还想检查此阵列中是否存在重复项,并自动将其删除。在找到重复项后,我尝试调用subscribe中的.next(),但即使数组看起来正确,视图也不能正确反映。它显示阵列而不删除重复项。不知道我的方法是否正确?我做错了什么

在我的ngOnInit()函数中有:

this.things$.subscribe(things => {
  const uniqueThings = _.uniqBy(things,'name');
  if (uniqueThings.length !== things.length) {
    this.things$.next([...uniqueThings]);
  } else {
    this.selectEnabledThing(things.length);
  }
});

组件输入:@input()things$:BehaviorSubject=newbehaviorsubject([])<代码>this.things$.pipe(map(things=>qby(things,'name')).subscribe(…)@Siri0S我已经试过了。所以在subscribe中,我会得到唯一的东西,但是组件视图显示了所有的东西。如何使视图与数组中的内容匹配?我认为这是可行的。您应该将可观察对象分配给一个变量,例如:
const thingsToShow$=this.things$.pipe(map(things=>uqby(things,'name'))
。然后在html中,它应该是这样的:
,但我实际上需要它来订阅既有唯一内容又有“已启用”内容的数组。