Cette propriété fromEvent n'existe pas sur le type " typeof Observables Angulaire 6
J'ai un problème en essayant de créer à son tour la keyup événements dans une observable flux.
Je suis à la suite de la Ng-livre version 6.
Je suis coincé dans un exemple qui fait une recherche de la vidéo de YouTube que vous tapez. Lorsque la recherche de retours, nous allons voir une liste de miniatures de vidéo résultats, avec une description et un lien vers la vidéo.
Donc, pour cela, nous utilisons un fait 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
Dans RxJS 5, il fournit un moyen d'écouter les événements sur un élément à l'aide de Rx.Observables.fromEvent.
ngOnInit(): void {
//convert the `keyup` event into an observable stream
Observable.fromEvent(this.el.nativeElement, 'keyup')
Mais j'obtiens cette erreur:
ERREUR dans src/app/search-box/boîte de recherche.composante.ts(42,13): erreur
TS2339: la Propriété 'fromEvent" n'existe pas sur le type " typeof
Observables'.
Je RxJS 6 l'importation pour les Observables et fromEvent est comme ceci:
import { Observable, fromEvent } from 'rxjs';
C'est mon code pour le RxJs5 version Angulaire 6: (il ne marche pas)
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()
C'est ma essayer avec RxJs 6 et angulaire 6 (il est mis à jour selon la dernière réponse)
Je suis en train d'utiliser le tuyau de la syntaxe:
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
)
Mais j'ai cette erreur:
Propriété "carte" n'existent pas sur le type d'Observable{<>}
Et dans la ligne de commande, après exécution ng servir:
ERREUR dans la boîte de recherche/de la boîte de recherche.composante.ts(40,4): erreur TS1135: Argument > expression attendue.
de la boîte de recherche/de la boîte de recherche.composante.ts(54,4): erreur TS1128: Déclaration ou d' > déclaration prévu.
Mais, il ne fonctionne pas... Donc, comment dois-je rédiger ma pipe sintax?
Comment mes recherches:
- La documentation de la Ng-livre est obsolète.
- La documentation de la angulaire guide est différent.
- - Je ouvrir un Question sur GitHub, mais ils me renvoyer ici
- github.com/ReactiveX/rxjs/blob/master/MIGRATION.md
- Double Possible de Propriété "carte" n'existe pas sur le type "Observables" après la mise à niveau de rxjs à 6
- Mais je suis en train d'importer mes
fromEvent
je n'ai pas le problème avec lemap
de l'opérateur. Mais merci, je vais vérifier que la réponse. - comment se moquer de fromEvent maintenant dans l'unité de test?
Vous devez vous connecter pour publier un commentaire.
Cela devrait fonctionner dans votre cas :
Espère que cela aide !
MODIFIER
Ici, c'est un travail de démonstration sur Stackblitz: Démo Angulaire 6 + 6 Rxjs
tab
etswitchall()
c'est l'erreur:ERROR in search-box/search-box.component.ts(46,10): error TS2304: Cannot find name 'tap'. search-box/search-box.component.ts(52,10): error TS2304: Cannot find name 'switchAll'.
Dans RxJS 5, vous avez été écrit
Les importations changé pour RxJS 6
Pour plus d'informations, jetez un oeil à la RxJS guide de migration.
fromEvent
de rwjs?Observable.fromEvent(this.el.nativeElement, 'keyup')
une idée? c'est ce que me donner le message d'erreur: la Propriété "fromEvent" n'existe pas sur le type "typeof Observables'.const obs = fromEvent(this.el.nativeElement, 'keyup');
map
n'existe pas sur le type deObservable<{}>