我正在努力寻找一种优雅的方法来将Angular的myForm.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不是boolean类型,而是string类型。
修改2: 好的,我想到了这个
// In ctor:
this.mySubject = new Subject<boolean>();
// Later on, somewhere else
this.myForm.statusChanges.pipe(map(s => 'VALID' === s)).subscribe(this.subject);
我认为这就是我所需要的:)
答案 0 :(得分:0)
您不必初始化另一个可观察的对象,只需从现有对象返回即可:
formValid$(): Observable<boolean> {
return this.myForm.statusChanges.pipe(map(status => status === 'VALID'));
}