【发布时间】:2019-02-27 22:27:32
【问题描述】:
我正在为我的所有 Angular 5 项目设置一个通用库。库是 GitHub 存储库 angular-library-starter-kit 的克隆。
在我尝试使用 HttpClientModule(HttpModule 的继任者)之前一切正常。
这是我的library.module.ts 文件的内容:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { HttpModule } from '@angular/http';
import { HttpClientModule } from '@angular/common/http';
import { MyService } from './my-service';
export * from './my-service';
@NgModule({
imports: [
CommonModule,
HttpModule,
HttpClientModule
],
exports: [
],
declarations: [
],
providers: [
MyService
],
})
export class LibraryModule { }
这里是my-service.ts 的内容(这是库中唯一的文件):
import { Injectable } from "@angular/core";
import { HttpClient } from "@angular/common/http";
import { Observable } from "rxjs/Observable";
@Injectable()
export class MyService {
constructor(private httpClient: HttpClient) {
//
}
getData(): Observable<any> {
return this.httpClient.get<any>('test.json');
}
}
该库的构建没有任何错误,但是当我尝试在新的 Angular 5 应用程序 (ng new myApp) 中使用它时,它给出了一个错误:
AppComponent_Host.ngfactory.js? [sm]:1 ERROR Error: StaticInjectorError(AppModule)[HttpXsrfTokenExtractor -> InjectionToken DocumentToken]:
StaticInjectorError(Platform: core)[HttpXsrfTokenExtractor -> InjectionToken DocumentToken]:
NullInjectorError: No provider for InjectionToken DocumentToken!
at _NullInjector.get (core.js:994)
at resolveToken (core.js:1292)
at tryResolveToken (core.js:1234)
at StaticInjector.get (core.js:1102)
at resolveToken (core.js:1292)
at tryResolveToken (core.js:1234)
at StaticInjector.get (core.js:1102)
at resolveNgModuleDep (core.js:10847)
at _createClass (core.js:10888)
at _createProviderInstance$1 (core.js:10858)
我什至尝试在 Angular 5 应用程序中导入模块 HttpModule 和 HttpClientModule,但我遇到了同样的错误。
我也尝试从应用程序和库中删除 HttpModule,但仍然出现相同的错误。
我同时使用 我了解到这不是是的。HttpModule 和HttpClientModule 的原因是因为apparently HttpClientModule 仍然依赖HttpModule 才能工作。
我该如何解决这个问题?
注意:新鲜的应用程序在 ng serve 上运行得很好,直到我将 LibraryModule 添加到它的 imports。
【问题讨论】:
-
为什么只从我的服务导入,然后立即导出?
-
@rrd 因为如果我不导出它,我会得到
Module: 'library' has no exported member 'MyService'。你有什么建议吗?我希望我的库中公开的所有内容都可以从单个文件中导入。
标签: angular