如何根据对象属性过滤可观察对象
How to filter an observable against object properties
我有一个 observable,fields$: Observable<Field[]>
。我需要查看每个字段的 required
和 result
属性以确定是否已填充所有必填字段。
我有另一个 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
)
);
}
正如您所指出的,您删除了花括号并且它起作用了。
我有一个 observable,fields$: Observable<Field[]>
。我需要查看每个字段的 required
和 result
属性以确定是否已填充所有必填字段。
我有另一个 observable,missingRequiredResults$: Observable<boolean>
,我通过 <button type="button" [disabled]="(missingRequiredResults$ | async)">
这是我用来设置 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
)
);
}
正如您所指出的,您删除了花括号并且它起作用了。