与功能请求相关的@angular/*包(s)是什么?
forms
描述
你好,Angular团队。
我遇到了一个问题,其中我有
父组件和子组件,子组件处于OnPush
状态。
子组件生成表单并将其发送到父组件
我们在父组件中有Submit
按钮,当我们提交表单时,首先它会检查表单的有效性,如果表单无效,它会将所有字段标记为已触摸。
因此,由于子组件的变更检测是OnPush
,它不会显示任何错误。
所以我在想,也许我们可以有一个类似于valueChanges
和statusChanges
的errorChanges
,这将帮助我们在模板中轻松使用它通过async
管道?
建议的解决方案
我几乎有相同的想法来实现它。
class FormControl extends AbstractControl {
//.......................
//.......................
//.......................
public get errorChanges(): Observable<ValidationErrors | null> {
return this.valueChanges.
pipe(
startWith(this.value),
mapTo(this.errors),
disctinctUntilChanged((prevState, currentState) => {
const prevErrors = Object. getOwnPropertyNames(prevState || {});
const newErrors = Object. getOwnPropertyNames(currentState || {});
const errorsList = new Set([...prevErrors, ...newErrors]);
for(let error of errorsList) {
if(prevErrors[error] !== newErrors[error]) {
return true;
}
}
return false;
})
);
}
}
考虑过的替代方案
.
1条答案
按热度按时间dgsult0t1#
也许这是我们可以添加到由#54579引入的新可观察对象中的内容。