2017-02-23 123 views
0

我有一个问题,试图找出这里的问题。我创建了一个自定义的Http类ExtendHttp,它扩展了Angular2 Http类并将它打包为一个npm模块。它编译并在项目内部运行测试用例,但是当我将其导入到使用NPM模块等项目,它会给出一个错误说:类型'ConnectionBackend'的参数不能分配给'ConnectionBackend'类型的参数

严重性:“错误”的消息:“类型的参数‘ConnectionBackend’是 不能分配给'ConnectionBackend'类型的参数。属性'createConnection'的 类型不兼容。 类型'(request:any)=>连接'不可分配给类型'(request:any)=>连接'。有两个不同的类型,这个名字 存在,但它们是不相关的。 类型'连接'不可分配以键入'连接'。这个名称存在两种不同的类型,但它们不相关。 属性“请求”的类型不兼容。 类型'请求'不可分配以键入'请求'。这个名称存在两种不同的类型,但它们不相关。 属性“标题”的类型不兼容。 类型“标题”不可分配为键入“标题”。这个名称存在两种不同的类型,但它们不相关。 类型具有私有属性'mayBeSetNormalizedName'的单独声明。'在:'35,42' 来源: 'TS'

这是我的自定义HTTP类:

@Injectable() 
export class ExtendedHttp extends Http { 
    private logger: Logger; 
    constructor(_backend: ConnectionBackend, _defaultOptions: RequestOptions, 
       private config: ApplicationConfiguration, 
       private evtsrv: EventService) { 
     super(_backend, _defaultOptions); 
     this.logger = new Logger(config.getLoggerConfig()); 
    } 
... 
} 

这是我如何使用它在我的其他项目:

@NgModule() 
export class CoreModule { 
    static forRoot(authzrule: AuthzRule[]): ModuleWithProviders { 
    return { 
     ngModule: CoreModule, 
     providers: [ 
     { provide: UserSessionStorageService, useClass: UserSessionStorageService }, 
     { 
     provide: Http, 
     useFactory: (xhrBackend: ConnectionBackend, requestOptions: RequestOptions, 
      config: ApplicationConfiguration, evtservice: EventService) => 
      new ExtendedHttp(xhrBackend, requestOptions, config, evtservice), 
     deps: [ConnectionBackend, RequestOptions, ApplicationConfiguration, EventService] 
}, 
+0

请发布自定义Http类的代码。 –

+0

请加上'AppModule'的相关部分和你使用的导入 –

+0

那么你在哪里导入'HttpModule'?请添加您的TypeScript导入。 –

回答

0

在实现将CoreModule写入导入npm模块的项目之后是一个不好的主意,因此将CoreModule的写入移回创建项目并将其与npm模块一起打包以解决问题。

感谢GünterZöchbauer时间&的努力,你会意识到我出错的地方。

相关问题