Перевести FormGroup.statusChanges в логическое значение Observable - PullRequest
0 голосов
/ 18 апреля 2019

Я изо всех сил пытаюсь найти элегантный способ перевести Angular's 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?

Edit : я должен переоценить свой вопрос следующим образом: Как я могу создать Observable<boolean> (отображениеформы статуса) и связать это на более позднем этапе с myForm.statusChanges?Обратите внимание, что в моем примере Observable имеет тип не логический, а строковый.

Edit 2: Хорошо, я придумал этот

// In ctor:
this.mySubject = new Subject<boolean>();
// Later on, somewhere else
this.myForm.statusChanges.pipe(map(s => 'VALID' === s)).subscribe(this.subject);

Iдумаю, это то, что мне нужно:)

1 Ответ

0 голосов
/ 18 апреля 2019

Вам не нужно инициировать другое наблюдаемое, просто вернитесь из существующего:

formValid$(): Observable<boolean> {
  return this.myForm.statusChanges.pipe(map(status => status === 'VALID'));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...