[英]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.