问题描述
我正在阅读本书(pro-Angular-6),并且遇到了这些语法
constructor(private model:Model,activatedRoute:ActivatedRoute) {}
我对以下几点感到困惑
-
我们如何在不注入
(what is difference between private activatedRoute:ActivatedRoute and activateRoute:ActivatedRoute)
的情况下使用类 -
如果我们只能将其用作引用类型,并限制在构造函数中使用它,如果可以,我尝试在组件内部的自定义类中使用
null injection error
class Emp { name='Bob' id = '12' } constructor(private model:Model,activatedRoute:ActivatedRoute,emp:Emp){}
-
如果我尝试访问方法时遇到错误,为什么只能在构造函数中激活访问权限
constructor(activateRoute:ActivatedRoute){ console.log(activatedRoute) //no error } someMethod() { console.log(activatedRoute) //error Did You mean ActivatedRoute console.log(this.activatedRoute) //error proprtey activateRoute Does not exist
}
4)此外,对于使用以下语法constructor(activateRoute:ActivatedRoute){}
解决方法
- 公共依赖性可以通过组件的模板访问,而私有依赖性不能通过组件的模板访问。
例如:
constructor(activateRoute:ActivatedRoute){}
或
constructor(public activateRoute:ActivatedRoute){}
在以下模板中使用时,不会抛出错误
<div *ngIf="activateRoute">content goes here </div>
- 在成角度的情况下,仅当使用以下类型的 injectable 注释类时,我们才能注入。
例如:
@injectable({
providedIn:'root'
})
class Emp {
name='Bob'
id = '12'
}
export class AppComponent{
constructor(private model:Model,activatedRoute:ActivatedRoute,emp:Emp){}
}
,
您的第一个问题是关于打字稿的。如果未在构造函数参数上指定访问修饰符,则只能在构造函数中访问它。
,上面的前2个解释是合理的
- 除构造函数外,我无法访问其他任何地方,因为在构造函数中,我将
activateRoute:ActivatedRoute
作为签名传递给了构造函数,因此我只能在构造函数中访问
4。我们正在引用类型(与Java脚本对象符号表示法混淆)