簡體   English   中英

Angular 2 - 在同一組件中具有參數的多個服務實例

[英]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
  ) {}

這是 stackblitz 中的一個例子。

暫無
暫無

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

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