angular - 将 FormGroup.statusChanges 转换为布尔 Observable
问题描述
我正在努力寻找一种优雅的方式将 AngularmyForm.StatusChanges
转换为更简单的Observable<boolean>
指示表单是否有效:
this.valid$ = new Observable<string>();
const validObs$ = valid$.pipe(map( x => {
console.log('x is: ' + x);
return 'VALID' === x;
}));
// This following line happens somewhere else, as soon as myForm is set
this.myForm.statusChanges.subscribe(this.valid$);
// Consume validObs$ wherever needed
我很确定有一种更好、更优雅、更直接的方法可以转换statusChanges
为简单的布尔 Observable?
编辑:我应该重新评估我的问题如下:如何创建Observable<boolean>
(映射表单状态)并在稍后阶段将其绑定到myForm.statusChanges
?请注意,在我的示例中,Observable 不是布尔类型,而是字符串。
编辑2: 好的,我想出了这个
// In ctor:
this.mySubject = new Subject<boolean>();
// Later on, somewhere else
this.myForm.statusChanges.pipe(map(s => 'VALID' === s)).subscribe(this.subject);
我想这就是我需要的:)
解决方案
您不必初始化另一个 observable,只需从现有的返回:
formValid$(): Observable<boolean> {
return this.myForm.statusChanges.pipe(map(status => status === 'VALID'));
}
推荐阅读
- excel - 根据图表数量重新调整条形图的大小
- javascript - 如何更改样式属性中的变量
- javascript - Express.js - 在应用程序级中间件中访问目标路由详细信息
- sass - 如何连接 Sass @include 函数
- excel - 如何应用动态数字格式?
- javascript - 如何在反应中更改数组的某些值
- python-3.x - 我正在 python 的街机库中制作一个文本框。当文本长度增加超过允许的宽度时,我无法处理滚动
- jquery - 这个 jQuery 代码中的 $({ counter: 0 }) 是什么?什么类型的选择器?
- php - 合并和查找两个关联数组的总和 - PHP
- git - 在纱线工作区中运行“git clean -xdf”时,跟踪文件被删除