如何根据对象属性过滤可观察对象

How to filter an observable against object properties

我有一个 observable,fields$: Observable<Field[]>。我需要查看每个字段的 requiredresult 属性以确定是否已填充所有必填字段。

我有另一个 observable,missingRequiredResults$: Observable<boolean>,我通过 <button type="button" [disabled]="(missingRequiredResults$ | async)">

用于 enable/disable 一个按钮

这是我用来设置 missingRequiredResults$:

的方法
private validateRequiredResults() {
  this.missingRequiredResults$ = this.fields$.pipe(
    map(fields => 
      fields.filter(field => {
          field.required == true && (field.result == null || field.result == '')
        }).length != 0
    )
  );
}

无论我做什么,missingRequiredResults$ 的值都是 false

我做错了什么?

您的代码缺少大括号中的 return 语句

private validateRequiredResults() {
  this.missingRequiredResults$ = this.fields$.pipe(
    map(fields => 
      fields.filter(field => {
          return field.required == true && (field.result == null || field.result == '') //add the return statement here
        }).length != 0
    )
  );
}

正如您所指出的,您删除了花括号并且它起作用了。