在Angular中注入activateRoute类

问题描述

我正在阅读本书(pro-Angular-6),并且遇到了这些语法

 constructor(private model:Model,activatedRoute:ActivatedRoute) {} 

我对以下几点感到困惑

  1. 我们如何在不注入(what is difference between private activatedRoute:ActivatedRoute and activateRoute:ActivatedRoute)的情况下使用类

  2. 如果我们只能将其用作引用类型,并限制在构造函数中使用它,如果可以,我尝试在组件内部的自定义类中使用null injection error

       class Emp {
                name='Bob'
                id = '12'  
              }
    
    constructor(private model:Model,activatedRoute:ActivatedRoute,emp:Emp){}
    
  1. 如果我尝试访问方法时遇到错误,为什么只能在构造函数中激活访问权限

    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){}

定义类型还是将其注入构造函数,我感到困惑

解决方法

  1. 公共依赖性可以通过组件的模板访问,而私有依赖性不能通过组件的模板访问。

例如:

constructor(activateRoute:ActivatedRoute){}  

constructor(public activateRoute:ActivatedRoute){}
在以下模板中使用时,

不会抛出错误

<div *ngIf="activateRoute">content goes here </div>
  1. 在成角度的情况下,仅当使用以下类型的 injectable 注释类时,我们才能注入

例如:

    @injectable({
    providedIn:'root'
    })
     class Emp {
                name='Bob'
                id = '12'  
              }
    

export class AppComponent{
    constructor(private model:Model,activatedRoute:ActivatedRoute,emp:Emp){}
}
,

您的第一个问题是关于打字稿的。如果未在构造函数参数上指定访问修饰符,则只能在构造函数中访问它。

,

上面的前2个解释是合理的

  1. 除构造函数外,我无法访问其他任何地方,因为在构造函数中,我将activateRoute:ActivatedRoute作为签名传递给了构造函数,因此我只能在构造函数中访问

4。我们正在引用类型(与Java脚本对象符号表示法混淆)