![](/img/trans.png)
[英]Angular 8: How to provide different service instances to multiple instances of the same component
[英]Angular 2 - multiple instances of service with parameters in same component
我的應用程序結構介紹:我有一個lists-service
,它處理來自 API 的列表,標准化為列和行。 它包括映射、排序、分頁和其他功能。
對於每個 API,我創建了子服務(擴展ListsService
),例如用戶列表 - UsersListService
,操作 - ActionsListService
等等。
這些子服務有自己的數據和一些特定於每個的額外功能。
這些服務是在根目錄中提供的,因為除了被注入到每個頁面組件中之外,它們還被注入到側邊欄組件中。
更具體地說:我有LicenseListService
:
@Injectable({
providedIn: 'root'
})
export class LicenseListService extends ListsService {....}
它被注入到UserLicenseComponent
(路由組件)
constructor(...
public licenseList: LicenseListService,
... ) {...}
但也在LicenseSidebarComponent
中,它在不同的地方使用。
我需要的
我需要這個LicenseListService
的 2 個實例,它們將使用相同的輸入數據(來自相同的 API),但在一個中我將擁有有效的許可證,而在另一個過期的許可證中(以便可以同時顯示兩個表。
一種方法是從LicenseListService
創建子服務,但我寧願擁有相同服務的 2 個實例,但使用狀態參數(狀態 = 'active' 或 status = 'expired')。
最好的方法是什么?
我在 stackoverflow 上看到了一些部分解決方案(針對我的問題),但需要將其組合成完整的解決方案。
你可以在同一個組件中使用它:
在應用模塊中:
providers: [
{ provide: 'instance1', useClass: DataService },
{ provide: 'instance2', useClass: DataService },
]
在您的組件中:
constructor(
@Inject('instance1') private service1: DataService,
@Inject('instance2') private service2: DataService
) {}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.