【问题标题】:Injecting activateRoute class in Angular在 Angular 中注入 activateRoute 类
【发布时间】:2020-12-18 09:33:08
【问题描述】:

我正在阅读这本书(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){}

【问题讨论】:

    标签: angular typescript angular6


    【解决方案1】:

    上面的前2个解释是有道理的

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

    4 .我们正在对 Type 进行裁判(与 java script object Notation 混淆)

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:
        1. 公共依赖可以被组件的模板访问,而私有依赖不能被组件模板访问

        例如:

        constructor(activateRoute:ActivatedRoute){}  
        

        constructor(public activateRoute:ActivatedRoute){}
        

        在如下模板中使用时不会抛出错误

        <div *ngIf="activateRoute">content goes here </div>
        
        1. 在 Angular 中,只有当类被以下 injectable 注释时,我们才能inject

        例如:

            @injectable({
            providedIn:'root'
            })
             class Emp {
                        name='Bob'
                        id = '12'  
                      }
            
        
        export class AppComponent{
            constructor(private model:Model,activatedRoute:ActivatedRoute,emp:Emp){}
        }
        

        【讨论】:

        • 感谢您的解释,我已经添加了 3 点,您能否在阅读后说明,如果公开注入与不公开注入相同,为什么我无法访问方法内部
        猜你喜欢
        • 2019-04-26
        • 1970-01-01
        • 1970-01-01
        • 2018-06-18
        • 2020-03-16
        • 1970-01-01
        • 1970-01-01
        • 2019-07-02
        • 1970-01-01
        相关资源
        最近更新 更多