簡體   English   中英

在Angular中注入activateRoute class

[英]Injecting activateRoute class in Angular

我正在閱讀這本書(pro-Angular-6),我遇到了這些語法

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

我對以下幾點感到困惑

  1. 我們如何使用 class 而不注入(what is difference between private activatedRoute:ActivatedRoute and activateRoute:ActivatedRoute)

  2. 如果我們可以只用作參考類型並限制在構造函數中使用它,如果沒問題我嘗試在我的組件中使用自定義 class 我收到null injection error

     class Emp { name='Bob' id = '12' } constructor(private model:Model,activatedRoute:ActivatedRoute,emp:Emp){}
  1. 為什么我只能在構造函數中訪問 activated 如果我嘗試在方法中訪問我收到錯誤

    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. 在 angular 中,只有當 class 被注解為injectable時,我們才能進行注入,如下所示。

前任:

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

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

你的第一個問題是關於 typescript。如果你沒有在構造函數參數上指定訪問修飾符,它只能在構造函數中訪問。

上面的前兩個解釋是有道理的

  1. 除了在構造函數中,我無法訪問任何 Where,因為在構造函數中我將activateRoute:ActivatedRoute作為簽名傳遞給構造函數,所以我只能在構造函數中訪問

4.我們正在引用類型(與 java 腳本 object 符號混淆)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM