我有一个服务,像这样:
@Injectable()
export class EditorService { ... }
Run Code Online (Sandbox Code Playgroud)
我有一个组件,像这样:
@Component({
...
template: `<child-component></child-component>`,
providers: [EditorService],
...
})
export class SomeComponent {
constructor(
private _appleEditorService: EditorService,
private _pearEditorService: EditorService) {}
}
Run Code Online (Sandbox Code Playgroud)
您可能已经注意到,此组件具有子组件:
@Component({
...
selector: 'child-component',
...
})
export class ChildComponent {
constructor(
private _appleEditorService: EditorService,
private _pearEditorService: EditorService) {}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我想要两个我的实例EditorService:一个用于编辑苹果,一个用于编辑梨.但是,上面的代码不起作用,因为Angular无法知道哪个实例的EditorService变量名是私有的._pearEditorService在ChildComponent还不如指同一个实例_appleEditorService中SomeComponent.
问题:那么,我可以两次使用相同的Angular2服务吗?
编辑:我的问题的关键是如果可以使用相同的类.我知道有一些解决方法是为服务的每个实例创建一个单独的类,甚至通过继承实现少量代码.我只是想知道是否可以不用.
我正在尝试导入D3,以便我可以在Angular2模块中使用它.
一些背景信息:
我做了什么:
我安装了NPM D3包:
npm install d3 --save
Run Code Online (Sandbox Code Playgroud)我使用Typings安装了D3类型描述,因为这是Angular2-Seed用于已安装的库的内容.
typings install d3 --save
Run Code Online (Sandbox Code Playgroud)然后,在我的Angular2模块文件中,我添加了import语句
import * as d3 from 'd3';
Run Code Online (Sandbox Code Playgroud)结果是TSC给出了错误消息"找不到模块'd3'".我错过了什么或做错了什么?