我注意到,如果没有使用显式范围定义进行注入,则角度类将无法识别注入的服务。
以下代码不起作用
constructor(router: Router) {}
但是这个确实。
constructor(private router: Router) {}
谁能解释为什么?我相信,如果您未明确编写属性的作用域定义,则默认情况下它是公共的,就像类属性一样,但此处似乎并非如此。
您在构造函数中定义的任何内容都将作为参数。TypeScript
可以为它附加访问器是很方便的。例如:
constructor(private router: Router) {}
是ES6的简写:
constructor(router) {
this.router = router;
}
但是,如果执行以下操作,则依赖项注入仍然有效:
constructor(router: Router) {
// router only available in this scope
}
只是它仅在构造函数内部可用,而在类实例中不可用,因为它位于构造函数{}
范围内。类字段在类{}
范围内定义,因此在整个类中都可以访问
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句