小编Dev*_*aro的帖子

使用相同服务的多个实例

我有一个服务,像这样:

@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变量名是私有的._pearEditorServiceChildComponent还不如指同一个实例_appleEditorServiceSomeComponent.

问题:那么,我可以两次使用相同的Angular2服务吗?

编辑:我的问题的关键是如果可以使用相同的类.我知道有一些解决方法是为服务的每个实例创建一个单独的类,甚至通过继承实现少量代码.我只是想知道是否可以不用.

angular2-services angular

22
推荐指数
1
解决办法
2万
查看次数

Angular2-Seed + Typings + D3:导入错误,'找不到模块'd3''

我正在尝试导入D3,以便我可以在Angular2模块中使用它.

一些背景信息:

  • 我在TypeScript中编写Angular2.
  • 我正在使用Angular2-seed

我做了什么:

  1. 我安装了NPM D3包:

    npm install d3 --save
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我使用Typings安装了D3类型描述,因为这是Angular2-Seed用于已安装的库的内容.

    typings install d3 --save
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后,在我的Angular2模块文件中,我添加了import语句

    import * as d3 from 'd3';
    
    Run Code Online (Sandbox Code Playgroud)

结果是TSC给出了错误消息"找不到模块'd3'".我错过了什么或做错了什么?

d3.js typescript typescript-typings angular

9
推荐指数
1
解决办法
5525
查看次数