2017-10-16 4 views
0

edit See Ikhtiyor's answer as it may fix the TypeScript related issue. My problem came from the fact I forgot to .subscribe and wrote the handler function in .first() directly.angulaire + 4.2.4 + RxJS Tapuscrit 2.3.4: "premier 5.4.2()" est pas connu sur Observable

Alors, face à cette erreur (!?!):

Property 'first' does not exist on type Observable<{}> 

J'ai trouvé des discussions où les gens coincés dans les versions suivantes et ont obtenu leurs problèmes résolus:

Angular 4.2.4 + Typescript 2.3.4 + RxJS 5.4.2

Pourtant, il ne fonctionne pas pour moi. Testé sur 2 machines (une mac, une windows). Pas même après avoir effacé node_modules et re-npm les installer. Toute personne faisant face à ce bloqueur?

Exemple:

const obs = new Observable(observer => { 

    setTimeout(() => { 
    observer.next(
     [{ 
     type: 'voting', 
     title: 'First dynamic resolution', 
     description: 'Issued by dummy web API. Dynamic data rocks.', 
     documents: ['a doc'], 
     voting:{ 'jem': -1 }, 
     status: 'PENDING' 
     }, { 
     type: 'voting', 
     title: 'Other dynamic resolution', 
     description: 'Issued by dummy web API. We know Jem is proud.', 
     documents: ['another doc'], 
     voting:{ 'jem': -1 }, 
     status: 'PENDING' 
     }] 
    ); 
    }, 1000); 
}); 

// Compile stops here: Property 'first' does not exist on type Observable<{}> 
// Original mistake: it's "obs.first().subscribe(..." 
obs.first(data => { 
    console.log('data feteched'); 
}); 
+0

so .. le code est hors de propos? – Blauhirn

+0

oui, ne compilera pas et Webstorm se plaint à ce sujet. Était en utilisant des observables depuis des âges et maintenant ce projet revendications en .wirst (et d'autres opérateurs/propriétés observables) ne sont pas connus. – Jem

+0

vient d'ajouter un exemple de fragment de code – Jem

Répondre

2

Vous devez importer chaque méthode observable ou l'opérateur comme celui-ci

pour la méthode import 'rxjs/add/observable/of'; pour l'opérateur import 'rxjs/add/operator/map';

+0

Salut @ Ikhtiyor, merci, mais cela n'a pas fonctionné non plus. Il corrige le problème de compilation, mais l'opérateur ".first()" que j'utilise ne se déclenche pas du tout s'il est importé de cette façon: import 'rxjs/add/operator/first'; – Jem

+0

Oh, attendez, semble que j'ai sauté chaîner "abonner" à "premier", comme dans .first(). Subscribe ((...) => {...}) ... laissez-moi voir que – Jem

+0

Ok, été à la recherche comme un fou au mauvais endroit. J'ai oublié le chaînage .subscribe. Merci pour votre temps :-) – Jem