0

У меня возникли проблемы с использованием Promise в угловом2. Я импортировал все файлы, как это было предложено угловыми документами. Но получите ошибку «Не могу найти имя Promise». Ниже мой код:Не можете найти имя Promise

import { Injectable } from '@angular/core'; 
import { Headers, Http, Response } from '@angular/http'; 
import 'rxjs/add/operator/toPromise'; 
@Injectable() 
export class StorefrontService { 
    private sfUrl = 'app/storefront/storefront.component.json'; // URL to mock json 
    constructor(private http: Http) { } 
    getSfItems(): Promise<any[]> { 
     return this.http.get(this.sfUrl) 
      .toPromise() 
      .then(this.extractData) 
      .catch(this.handleError); 
    } 
    private extractData(res: Response) { 
     let body = res.json(); 
     return body.data || {}; 
    } 
    private handleError(error: Response | any) { 
     // In a real world app, we might use a remote logging infrastructure 
     let errMsg: string; 
     if (error instanceof Response) { 
      const body = error.json() || ''; 
      const err = body.error || JSON.stringify(body); 
      errMsg = `${error.status} - ${error.statusText || ''} ${err}`; 
     } else { 
      errMsg = error.message ? error.message : error.toString(); 
     } 
     console.error(errMsg); 
     return Promise.reject(errMsg); 
    } 
} 

Является ли объект Promise необходимо импортировать откуда-то? Я попытался импортировать из библиотеки rxjs, но это не сработало.

import { Promise } from 'rxjs/Promise'; 

Любая идея, почему это происходит?

+0

Получаете ошибку в своем браузере или своем идете – lastWhisper

+0

Я получаю это в IDE (код VS) –

ответ

0

Добавьте следующие строки в раздел импорта:

import { Observable } from 'rxjs/Rx' 

this.http.get(...) возвратит наблюдаемый, который может вернуть обещание, добавив toPromise() как ваши сделали в своем коде. тем не менее, вы не должны импортировать ничего другого для обещания, поскольку это класс по умолчанию в ES6.

Смотри также:

надеюсь, что это помогает.

+0

Эй. Я пробовал, но он по-прежнему дает такую ​​же ошибку в IDE. Еще кое-что. В моем tsconfig.json у меня установлена ​​целевая установка на ES5 .. –

+0

Установите его на ES6 и проигнорируйте ошибку, он будет компилировать штраф – lastWhisper

Смежные вопросы