Rx js - .subscribe не является функцией при импорте UnaryFunction из другого файла - PullRequest
0 голосов
/ 26 апреля 2020

У меня следующая проблема.

Учитывая два файла, intents.ts и login.ts, где intents.ts содержит среди прочих

export const loginUiEventsHandler =
    publish((uiEvents: Observable<UiEvents>) =>
        merge(
            uiEvents.pipe(filter(e => e.type === 'EMAIL_LOGIN_CHANGE'), flatMap((e: EmailLoginChange) => validateEmailLogin(e.emailLogin))),
            uiEvents.pipe(filter(e => e.type === 'PASSWORD_CHANGE'), flatMap((e: PasswordChange) => validatePassword(e.password))),
            uiEvents.pipe(filter(e => e.type === 'LOGIN_CLICK'), flatMap((e: LoginClick) => login(e.emailLogin, e.password)))
        )
    )

и login.js содержит среди других

events
    .pipe(loginUiEventsHandler)
    .subscribe(e => console.log(e))

Когда я пытаюсь импортировать функцию loginUiEventsHandler из intents.ts в login.ts, используя import { loginUiEventsHandler } from './intents';, я получаю ошибку

TypeError: selector(...).subscribe is not a function

Однако , когда я просто копирую и вставляю ту же функцию в login.ts, кажется, все работает нормально.

Что я делаю не так? Как я могу повторно использовать функцию rx js UnaryFunction для файлов.

Пожалуйста, извините, если этот вопрос очевиден, я только начал использовать машинопись.

1 Ответ

0 голосов
/ 26 апреля 2020

Попробуйте применить switchMap:

events
    .pipe(switchMap(events => loginUiEventsHandler(events))
    .subscribe(e => console.log(e))
...