я использую
при компиляции приложения Angular 6 у меня возникли ошибки, ниже только первая.
ERROR in ./src/app/web.service.ts
Module not found: Error: Can't resolve 'rxjs/add/operator/toPromise' in
'C:\Node\ang\frontend\src\app'
Мой код web.service.ts
import { Http, Headers, Response } from '@angular/http';
import 'rxjs/add/operator/toPromise';
export class WebService{
constructor(private http:Http){
}
getMessages(){
return this.http.get("http://localhost:2000/messages").toPromise();
}
}
Мой код app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
import {MatButtonModule,
MatCardModule,
MatSnackBarModule,
MatToolbarModule,
MatInputModule} from '@angular/material';
import { AppComponent } from './app.component';
import { WebService } from './web.service';
import { MessagesComponent } from './messages.component';
import {HttpModule} from '@angular/http';
@NgModule({
declarations: [
AppComponent, MessagesComponent
],
imports: [
BrowserModule, HttpModule, NoopAnimationsModule, MatButtonModule, MatCardModule, MatSnackBarModule, MatToolbarModule, MatInputModule
],
providers: [WebService],
bootstrap: [AppComponent]
})
export class AppModule { }
Я изучаю Angular из видеоурока Lynda.com. Я слежу за каждым шагом. но я получил ошибку.
Вам следует установить библиотеку rxjs-compat, а также для других операторов, которые могут потребоваться при переходе на rxjs6 +.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы используете HttpModule, который является устарел, вы должны использовать HttpClientModule вместо
рекомендуется использовать Observables over promises. При преобразовании в обещание вы потеряете возможность отмены запроса и возможность связывать операторы RxJS.
Прежде чем вы сможете использовать HttpClient, вам необходимо импортировать Angular HttpClientModule в корневой модуль.
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [
BrowserModule,
HttpClientModule,
],
//.......
Измененный код:
import { HttpClient} from '@angular/http';
import {Observable} from 'rxjs';
export class WebService{
constructor(private httpc:Http){}
getMessages():Observable<any>{
return this.httpc.get("http://localhost:2000/messages");
}
}
Regarding the error you are getting
Начиная с rxjs 5.5.0-beta.5 +, метод toPromise теперь является постоянным методом Observable. Больше не нужно импортировать его Reference
Поскольку вы работаете с RXJS 6+, я бы посоветовал вам пройти ChangesLIVE DEMO WITH HTTPCLIENT
Строка комментария: import 'rxjs / add / operator / toPromise';
смешно, но это правильный ответ ... Решил мой случай. Это просто потому, что toPromise является законным членом, сейчас импорт не требуется ... хотя описание в ответе может быть более подробным ...
Разве .toPromise() раньше не был легитимным членом ... а потом не одним ... а теперь снова? ... Но до всего этого не одним - а до что легитимным? Я чувствую, что каждый выпуск этого репо меняет это.
После Angular 6 вам нужно будет установить пакет rxjs-compat
npm install --save rxjs-compat
подробнее смотрите https://academind.com/learn/javascript/rxjs-6-what-changed/
Отметьте мой ответ, если это помогло, у вас нет хорошей истории отмечать ответы;)