Эмитировать новое значение в Observable - PullRequest
1 голос
/ 29 марта 2019

У меня есть следующий код:

this.isUsingGoogleTwoFactor$ = this.user$.pipe(map((user: User) => 
user.isUsingGoogleTwoFactor));

Теперь мне нужно передать новое значение в isUsingGoogleTwoFactor$.Я знаю, что не могу сделать это с observables, но я должен использовать subjects.Но я не знаю точно, как это сделать с трубами.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 29 марта 2019

Проверка Поведение объекта .Это вид Observable, который позволяет вам выдвигать новые значения и отслеживать последнее выданное им значение.

Пример того, как его использовать, связан с тем сайтом, на который я ссылался.но вкратце, вот как вы это используете:

const observable = new BehaviorSubject("initial value");

Если в этот момент приходит подписчик и выполняет:

observable.subscribe({
    next: (value) => console.log("The value is: ", value)
});

Тогда вывод будет:

The value is: initial value

После этого каждый раз, когда вы вызываете next, все подписчики получат уведомление:

observable.next("a new value");

напечатает это в подписчике:

The value is: a new value
1 голос
/ 29 марта 2019

Если я правильно понял, вы хотите, чтобы это наблюдаемое сработало как при изменении пользователя $, так и при его ручном запуске.Тогда вы могли бы сделать этот подход.

import { merge, Subject } from 'rxjs';

...

const manuallyTriggered$ = new Subject();
const triggeredFromUser$ = this.user$.pipe(
    map((user: User) => user.isUsingGoogleTwoFactor)
);

this.isUsingGoogleTwoFactor$ = merge(manuallyTriggered$, triggeredFromUser$);

И когда вы хотите вручную запустить его:

manuallyTriggered$.next(true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...