[英]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.