簡體   English   中英

Angular:使用構造函數注入服務的替代方法

[英]Angular: alternative to injecting services using the constructor

我發現的所有示例都注入了這樣的服務:

export class TestComponent {

  constructor(
    private dataService: DataService,
    private dataService2: DataService2,
    private dataService3: DataService3,
    // ...
    // ...
    // ...
    // ...
    // ...
    // ...
    // ...
  ) {
        // Do something
    }
}

但是,如果您注入多個服務並使用構造函數方法來初始化某些內容,則此列表可能會變得很長且令人困惑。 所以問題是:
我可以寫這個嗎?

export class TestComponent {

  private dataService = new DataService();
  private dataService2 = new DataService2();
  private dataService3 = new DataService3();

  constructor() {
        // Do something
  }
}

這取決於您的服務究竟需要做什么。 如果它只是一堆有用的方法,你可以做到,但是在你編寫類似private dataService = new DataService();這樣的東西的每個組件中private dataService = new DataService(); 你會得到新的服務實例。

另一方面,在我的工作中,我們經常使用服務作為數據存儲,從中查詢某些內容,使用這個new關鍵字,您將實例化它並且不會獲取從另一個組件傳遞的任何數據。

無論如何,DI 是 Angular 生態系統的重要組成部分。 因此,您可以將其聲明為模塊上的提供程序(在此之前將您的組件分開以依賴某個模塊),這些模塊實際上正在使用它們將其數量降低到應用程序模塊中。 因為如果您將許多東西注入 1 個組件構造函數中以更好地分離某些功能,因為它可能變得非常丑陋。

暫無
暫無

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

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