Угловой 6: модуль не найден ошибка относительно RxJs - PullRequest
0 голосов
/ 27 мая 2018

Я использую

  • Угловой CLI: 6.0.5
  • Узел: 8.11.1
  • Угловой: 6.0.3
  • rxjs: 6.2.0

при компиляции приложения 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'

My web.service.ts code

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(); 
    }
} 

My app.module.ts code

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.Я следую за каждым шагом.но я получил ошибку.

Ответы [ 2 ]

0 голосов
/ 10 августа 2018

Строка комментария: импорт 'rxjs / add / operator / toPromise';

0 голосов
/ 27 мая 2018

Вы используете 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"); 
        }
    } 

Относительно получаемой ошибки

По состоянию на rxjs 5.5.0-бета.5 + метод toPromise теперь является постоянным методом Observable.Вам больше не нужно импортировать его Reference

Поскольку вы работаете с RXJS 6+, я бы порекомендовал вам пройти через Changes

LIVE DEMO WITH HTTPCLIENT

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...