Angular 2 AppLevel服务不会注入子组件

时间:2017-03-31 08:26:01

标签: angular dependency-injection

我将举一个简化的例子来解释我的问题。

app.module.ts

...
providers: [MyService]
...

parent.component.ts

@Component({
    selector: 'parent',
    template:'<child></child>'
})
export class ParentComponent {
  constructor(private myService: MyService) {} <-- my service has been injected successfully
}

child.component.ts

@Component({
    selector: 'child',
    template:'<h1>child</h1>'
})
export class ChildComponent {
  constructor(private myService: MyService) {} <-- Error: No provider for MyService
}

我的印象是,一旦声明了服务提供者,该组件及其所有子分支就可以使用相同的服务。

我可以通过向子项添加提供程序来解决问题:

@Component({
    selector: 'child',
    template:'<h1>child</h1>',
    providers: [MyService]
})
export class ChildComponent {
  constructor(private myService: MyService) {} <-- Now it loads fine, but is it a new instance?
}

然而,这让我对DI在角度方面的工作方式感到困惑。为什么我收到错误:没有MyService的提供者?

修改

发现问题,将它留在这里,这有助于任何人。这不是Angular DI,因为我的掠夺者的例子无法复制这个问题。事实证明,

的网址部分
import { MyService } from './services/myService.service';

区分大小写。在app模块和父模型中,它都是小写的,而在孩子中它是Camel Case。

0 个答案:

没有答案