У меня возникла проблема при попытке создать события keyup в наблюдаемом потоке.
Я слежу за Ng-book версии 6. Я застрял в примере, которыйпроизводит поиск видео на YouTube по мере ввода.Когда поиск вернется, мы покажем список результатов миниатюрных видео, вместе с описанием и ссылкой на каждое видео.
Так что для этого мы используем observable.fromEvent: https://github.com/NiLinli/ng-book2-angular-6-r68-code-samples/blob/master/http/src/app/you-tube-search/search-box.component.ts
В RxJS 5 он предоставляет способ прослушивания событий в элементе с использованием Rx.Observable.fromEvent.
ngOnInit(): void {
// convert the `keyup` event into an observable stream
Observable.fromEvent(this.el.nativeElement, 'keyup')
Но я получаю эту ошибку:
ОШИБКА в src / app / search-box / search-box.component.ts (42,13): ошибка TS2339: Свойство 'fromEvent' не существует в типе 'typeof Observable'.
I RxJS 6 импорт для Observable и fromEvent выглядит следующим образом:
import { Observable, fromEvent } from 'rxjs';
Это мой коддля версии RxJs5 в Angular 6: (она не работает)
Observable.fromEvent(this.el.nativeElement, 'keyup')
.map((e: any) => e.target.value) // extract the value of the input
.filter((text: string) => text.length > 1) // filter out if empty
.debounceTime(250) // only once every 250ms
.do(() => this.loading.emit(true)) // enable loading
// search, discarding old events if new input comes in
.map((query: string) => this.youtube.search(query))
.switch()
Это моя попытка с RxJs 6 и angular 6 (обновляется в соответствии с последним ответом)
Я пытаюсь использовать синтаксис канала:
const obs = fromEvent(this.el.nativeElement, 'keyup')
.pipe (
.map((e:any) => e.target.value) // extract the value of the input
// .filter((text:string) => text.length > 1) //filter out if empty
.debounceTime(250) //only search after 250 ms
.tap(() => this.loading.emit(true)) // Enable loading
// search, call the search service
.map((query:string) => this.youtube.search(query))
// discard old events if new input comes in
.switchAll()
// act on the return of the search
)
Но у меня есть эта ошибка:
Свойство 'map' не существует для типа Observable {<>}
А в командной строке после запуска ng serve:
ОШИБКА в search-box / search-box.component.ts (40,4): ошибка TS1135:Аргумент> выражение ожидается.search-box / search-box.component.ts (54,4): ошибка TS1128: объявление или> оператор ожидаются.
Но это не работает ... Итак, какя должен написать свой синтаксис трубы?
Как идут мои исследования:
- Документация из Ng-книги устарела.
- Документация из угловой направляющей отличается.
- Я открываю проблему на GitHub, , но они отправляют меня сюда