【发布时间】:2018-05-18 10:35:16
【问题描述】:
我是 Angular 的新手,我对它有基本的了解。我想学习 HttpClient 这样我就可以创建一个 json 文件而不是真正的服务器。我创建了一个服务并导入了HttpClient:
service.ts
import { Injectable } from '@angular/core';
import {HttpClient, HttpErrorResponse} from '@angular/common/http';
import {IEmployee} from "../../../service/src/app/employee";
import {Observable} from "rxjs/index";
import 'rxjs/add/operator/catch';
import 'rxjs/add/observable/throw';
在我的班级EmployeeService 中,我创建了一个从 json 文件中获取数据的方法:
@Injectable({
providedIn: 'root'
})
export class EmployeeService {
private _url: string = "/assets/data/employees.json";
constructor(private http:HttpClient) { }
getEmployee():Observable<IEmployee[]> {
return this.http.get<IEmployee[]>(this._url)
.catch(this.errorHandler);
}
errorHandler(error: HttpErrorResponse) {
return Observable.throw(error.message || "Server Error")
}
}
但是在 getEmployee 方法中我得到了这些错误:
ERROR in ./src/app/employee.service.ts
Module not found: Error: Can't resolve 'rxjs/add/observable/throw' in 'E:\Tutorial\NodeJS\WebstormProjects\Angular\http\src\app'
ERROR in ./src/app/employee.service.ts
Module not found: Error: Can't resolve 'rxjs/add/operator/catch' in 'E:\Tutorial\NodeJS\WebstormProjects\Angular\http\src\app'
i 「wdm」: Failed to compile.
如您所见,我已导入 throw 和 catch 运算符,但我不知道为什么我不断收到错误。
另外一个问题是,throw method 下面出现一行因为 deprecated(Deprecated symbol used, consult docs for better alternative)!!
有什么替代方法?
Angular CLI: 6.0.1
Node: 10.0.0
OS: win32 x64
Angular:
...
Package Version
------------------------------------------------------
@angular-devkit/architect 0.6.1
@angular-devkit/core 0.6.1
@angular-devkit/schematics 0.6.1
@schematics/angular 0.6.1
@schematics/update 0.6.1
rxjs 6.1.0
typescript 2.7.2
****************** 编辑 ***************
我还想在 Angular 中使用内置的 Observable,但我不想使用 RXJS 第三方库来实现 Angular。
这是我的节点模块 rx 文件夹,你可以在其中看到 observable 文件。
在node_modules\rxjs\operator 文件夹中有throw 和catch 文件..
但是为什么要搜索这些文件到E:\Tutorial\NodeJS\WebstormProjects\Angular\http\src\app文件夹中会出错呢?
【问题讨论】: