web-dev-qa-db-fra.com

Angulaire 6: La propriété 'de' n'existe pas sur le type 'typeof Observable'

J'utilise Angular 6 Using "rxjs": "^ 6.0.0",

ERREUR: La propriété 'de' n'existe pas sur le type 'typeof Observable'.

import { Injectable } from '@angular/core';
import { TranslateLoader } from '@ngx-translate/core';
import { Observable, Subject, pipe, of } from 'rxjs';


@Injectable()
export class MiTranslateLoaderService implements TranslateLoader {

  getTranslation(lang: string): Observable<any> {
    return Observable.of({
      lbl_select: 'Select',
    });
  }
}
6
HD..

Depuis RxJS 6, la manière correcte et recommandée d’utiliser of() (RxJS 5 dans Observable.of()) est la suivante:

import { of } from 'rxjs';

Je pense que ce import { of } from 'rxjs/observable/of'; ne fonctionnera que tant que le paquetage rxjs-compat sera installé.

13
martin

Il y a des mises à jour dans rxjs: (Its rxjs6)

import { of } from 'rxjs';

Cela fonctionnera uniquement sirxjs-compatpackage est installé sur votre application. 

Vous pouvez importer of à partir de rxjs:

import { Observable,of } from 'rxjs';

Et retourne simplementof() 

 return of({
      lbl_select: 'Select',
    });

Donc, votre code sera:

import { Injectable } from '@angular/core';
import { TranslateLoader } from '@ngx-translate/core';
import { Observable, of } from 'rxjs';


@Injectable()
export class MiTranslateLoaderService implements TranslateLoader {

  getTranslation(lang: string): Observable<any> {
    return of({
      lbl_select: 'Select',
    });
  }
}
4
Shubham Verma

Cela fonctionne pour moi.

CLI angulaire 6.0.8

RxJS 6.2.2

import {of} from 'rxjs/index';


this.dataService.currentData

    .pipe(takeUntil(this.destroy$))
    .pipe(switchMap((myData:MyDataType) =>
      of(this.anotherService.get(myData._id))))
    .pipe(map((response) => {
         if(response instanceof Error) {
            console.log('error:');
            console.dir(response);
         }
         return response;
    }))
    .subscribe((data:any) => {
       doStuff(data);
      },
      response => {
        console.log('response error');
        console.log(response)
      },
      () => {
        console.log('response complete.');


      });
2
englishPete

Vous devez importer of à partir de rxjs/observable/of

import { of } from "rxjs/observable/of";

Usage:

return of({
  lbl_select: 'Select',
});

Mise à jour: pour rxjs version 6 sans rxjs-compat, vous devez importer of à partir de rxjs lui-même comme mentionné par @martin.

import { of } from 'rxjs';

Guide de migration vers rxjs6

0
Suraj Rao

La solution est de retourner de (..) directement:

getTranslation(lang: string): Observable<any> {
    return of({
      lbl_select: 'Select',
    });
0
A.Rekik

Avec la sortie de la version 6, RxJS a changé sa structure interne de paquet

https://www.academind.com/learn/javascript/rxjs-6-what-changed/#import-statement-update-path

import 'rxjs/add/observable/of';
// or 
import { of } from 'rxjs/observable/of';
0
HD..