3
votes

Pourquoi dans la minuterie observable angulaire ne fonctionne pas localement après le déploiement?

Le code ci-dessous fonctionne correctement en local, mais après le déploiement, il ne fonctionne pas.

Angular CLI: 6.0.3
Node: 8.11.2
OS: win32 x64
Angular:
...

Package                      Version
--------------------------------------
@angular-devkit/architect    0.6.3
@angular-devkit/core         0.6.3
@angular-devkit/schematics   0.6.3
@schematics/angular          0.6.3
@schematics/update           0.6.3
rxjs                         6.2.0
typescript                   2.7.2

Après avoir changé le code ci-dessus en code ci-dessous fonctionnant correctement à la fois localement et sur le serveur de production.

import { timer } from 'rxjs/observable/timer';
let somethingTimer = timer(5000);
// rest of other code.

Pourquoi cela se produit une explication.

Configuration:

import { Observable } from "rxjs/Observable";
let somethingTimer = Observable.timer(5000);
// rest of other code.

Erreur dans le journal de la console strong>

TypeError: a.timer n'est pas une fonction


2 commentaires

Qu'entendez-vous par «ne fonctionne pas»?


@martin J'ai mis à jour la question avec un message d'erreur de la console après l'inspection.


3 Réponses :


1
votes

Vous êtes passé de rxjs 5 à 6. Il y a eu de nombreux changements de 5 à 6.

Le premier exemple est le code rxjs 5 et le second est comment vous le faites en 6.


0 commentaires

0
votes

Cela a à voir avec la façon dont "timer" est importé. Dans le cas 1, la minuterie vient de l'objet "observable" mais sur le second est un let séparé importer {timer}

à mon avis, le moyen de parier est d'importer {timer} depuis 'rxjs / observable / timer';

j'espère vous aider


0 commentaires

2
votes

Le problème est que vous avez RxJS 6 mais que vous essayez d'utiliser timer comme dans RxJS 5 (RxJS 5 utilisait désormais un patch obsolète de la classe Observable ).

Depuis RxJS 6, la seule façon d'utiliser les opérateurs et les soi-disant «méthodes de création observables» est de les importer directement depuis 'rxjs' ou 'rxjs / operators' respectivement :

import { timer } from 'rxjs';

let somethingTimer = timer(5000);

Pour les documents sur la migration, voir:


1 commentaires

J'ai également recherché cela et trouvé medium. com / code-divoire /… . Merci d'avoir expliqué.