【发布时间】:2016-08-01 23:38:24
【问题描述】:
我想将接口的实现注入 Ionic2 组件(Ionic2 Beta 10,使用 Angular2 RC4)。假设我们有以下服务:
export interface ServiceInterface { /*...*/ }
@Injectable()
export class ServiceImpl implements ServiceInterface { /*...*/ }
如何将其注入 Ionic2 组件?我试过了:
import { Component, provide, Provider } from '@angular/core';
import { ServiceInterface } from './service.interface';
import { ServiceImpl } from './service.impl';
@Component({
providers: [
// Exception: Can't resolve all parameters for SomeComponent: (?)
ServiceImpl,
// @deprecated - seen on: http://blog.thoughtram.io/angular/2015/05/18/dependency-injection-in-angular-2.html
provide(ServiceInterface, {useClass: ServiceImpl}),
// @deprecated - seen on: http://plnkr.co/edit/RSTG86qgmoxCyj9SWPwY?p=preview
new Binding(ServiceInterface, {toAlias: ServiceImpl}),
// @deprecated - seen on: https://www.dartdocs.org/documentation/angular2/2.0.0-beta.9/angular2/Provider/useClass.html
new Provider(ServiceInterface, {useClass: ServiceImpl}),
// TS Error: Cannot find name 'ServiceInterface' - even though it is properly referenced
{provide: ServiceInterface, useClass: ServiceImpl}
]
})
export class SomeComponent {
constructor(private service: ServiceInterface) {}
}
按以下方式简单地使用ServiceImpl 就可以了,但这不是我想要的:
@Component({providers: [ServiceImpl]})
export class SomeComponent {
constructor(private service: ServiceImpl) {}
}
任何想法我缺少什么?
【问题讨论】:
标签: typescript angular ionic2