繁体   English   中英

为什么 Angular 的依赖注入需要私有或公共才能工作?

[英]Why does angular's dependency injection need private or public to work?

我注意到一个 angular class 不能识别注入的服务,如果它没有被注入明确的 scope 定义。

以下代码不起作用

constructor(router: Router) {}

但这一个可以。

constructor(private router: Router) {}

谁能解释为什么? 我相信,如果您没有明确编写属性的 scope 定义,那么它默认是公共的,就像类属性一样,但这里似乎不是这种情况。

您在构造函数中定义的任何内容都将作为参数。 这是一个TypeScript方便,您可以将访问器附加到它。 例如:

constructor(private router: Router) {}

是 ES6 的简写:

constructor(router) {
  this.router = router;
}

但是,如果您执行以下操作,依赖注入仍然有效:

constructor(router: Router) {
  // router only available in this scope
}

只是它只在构造函数内部可用,在 class 实例中不可用,因为它在构造函数{} scope 内部。 class 字段在 class {} scope 中定义,因此可在整个 ZA2F2ED4F8EBC2CBB14C21A29DC40 AB 中访问

第一个只是一个参数。 第二个是一个参数,它声明和设置一个私有字段。 public router: Router将是一个参数,它声明和设置一个公共字段。)DI 期望实例将保留注入到实例上的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM