Ответ 1
Вам нужно добавить оператор следующим образом:
import 'rxjs/add/operator/toPromise';
Это необходимо для каждого оператора rxjs, который вы хотите использовать.
import { Headers, Http } from '@angular/http';
@Injectable()
export class PublisherService{
private publishersUrl = 'app/publisher';
constructor(private http: Http) { }
getPublishers(): Promise<Publisher[]>{
return this.http.get(this.publishersUrl)
.toPromise()
.then(response => response.json().data)
.catch(this.handleError);
}
}
Я получаю эту ошибку:
Свойство "toPromise" не существует в типе "Observable".any
Вам нужно добавить оператор следующим образом:
import 'rxjs/add/operator/toPromise';
Это необходимо для каждого оператора rxjs, который вы хотите использовать.
Попробуйте добавить 'Response' в свой оператор import из '@angular/http' например:
import {Http, Headers, Response} from '@angular/http';
Также я заметил, что вы не импортируете Ingectable из ядра angular хотя вы используете @Injectable decorator.
import { Injectable } from '@angular/core';
использовать этот импорт в начале
import {Observable} from "rxjs/Rx";
Для кого-либо, кто наткнулся на это (это была главная ссылка google для меня), см. ниже, что связано с одним из связанных ответов
https://github.com/Microsoft/TypeScript/issues/8518#issuecomment-229506507
Как говорится, в Visual Studio 2015 вы можете исправить это, обновив версию typescript через
https://www.microsoft.com/en-us/download/details.aspx?id=48593
Для меня правильный ответ, отмеченный здесь, не работал, и я был заблокирован. Итак, я просмотрел еще одну ссылку которая предполагает, что это может быть проблемой с Visual Studio. Я попробовал вариант, который они предложили в ответ, но это также не сработало.
Итак, я пошел и установил код Visual Studio. Вещи начали нормально работать для меня, и я был разблокирован. Публикация этого для людей, которые заблокированы на нем (как и я).
Я знаю, что это не решение, а просто обходной способ, помогающий разблокировать людей.
Надеюсь, что это поможет.