Просмотр исходного кода

refactor(admin-ui): Use providedIn syntax for Angular providers

This is now the recommended way to declare providers, and also avoid this bug when consuming the library: https://github.com/angular/angular/issues/35576
Michael Bromley 5 лет назад
Родитель
Сommit
15a7869a12
37 измененных файлов с 97 добавлено и 119 удалено
  1. 0 14
      packages/admin-ui/src/lib/catalog/src/catalog.module.ts
  2. 8 6
      packages/admin-ui/src/lib/catalog/src/providers/product-detail.service.ts
  3. 3 1
      packages/admin-ui/src/lib/catalog/src/providers/routing/asset-resolver.ts
  4. 3 1
      packages/admin-ui/src/lib/catalog/src/providers/routing/collection-resolver.ts
  5. 3 2
      packages/admin-ui/src/lib/catalog/src/providers/routing/facet-resolver.ts
  6. 3 2
      packages/admin-ui/src/lib/catalog/src/providers/routing/product-resolver.ts
  7. 3 2
      packages/admin-ui/src/lib/catalog/src/providers/routing/product-variants-resolver.ts
  8. 1 1
      packages/admin-ui/src/lib/core/src/common/version.ts
  9. 0 19
      packages/admin-ui/src/lib/core/src/core.module.ts
  10. 3 1
      packages/admin-ui/src/lib/core/src/providers/auth/auth.service.ts
  11. 3 1
      packages/admin-ui/src/lib/core/src/providers/custom-field-component/custom-field-component.service.ts
  12. 3 1
      packages/admin-ui/src/lib/core/src/providers/guard/auth.guard.ts
  13. 4 1
      packages/admin-ui/src/lib/core/src/providers/i18n/i18n.service.ts
  14. 3 1
      packages/admin-ui/src/lib/core/src/providers/job-queue/job-queue.service.ts
  15. 3 1
      packages/admin-ui/src/lib/core/src/providers/local-storage/local-storage.service.ts
  16. 3 1
      packages/admin-ui/src/lib/core/src/providers/modal/modal.service.ts
  17. 4 4
      packages/admin-ui/src/lib/core/src/providers/nav-builder/nav-builder.service.ts
  18. 3 1
      packages/admin-ui/src/lib/core/src/providers/notification/notification.service.ts
  19. 3 1
      packages/admin-ui/src/lib/core/src/providers/overlay-host/overlay-host.service.ts
  20. 0 2
      packages/admin-ui/src/lib/customer/src/customer.module.ts
  21. 3 2
      packages/admin-ui/src/lib/customer/src/providers/routing/customer-resolver.ts
  22. 0 2
      packages/admin-ui/src/lib/login/src/login.module.ts
  23. 3 1
      packages/admin-ui/src/lib/login/src/providers/login.guard.ts
  24. 0 2
      packages/admin-ui/src/lib/marketing/src/marketing.module.ts
  25. 4 5
      packages/admin-ui/src/lib/marketing/src/providers/routing/promotion-resolver.ts
  26. 0 2
      packages/admin-ui/src/lib/order/src/order.module.ts
  27. 3 2
      packages/admin-ui/src/lib/order/src/providers/routing/order-resolver.ts
  28. 3 2
      packages/admin-ui/src/lib/settings/src/providers/routing/administrator-resolver.ts
  29. 3 2
      packages/admin-ui/src/lib/settings/src/providers/routing/channel-resolver.ts
  30. 3 2
      packages/admin-ui/src/lib/settings/src/providers/routing/country-resolver.ts
  31. 3 2
      packages/admin-ui/src/lib/settings/src/providers/routing/global-settings-resolver.ts
  32. 3 2
      packages/admin-ui/src/lib/settings/src/providers/routing/payment-method-resolver.ts
  33. 3 2
      packages/admin-ui/src/lib/settings/src/providers/routing/role-resolver.ts
  34. 3 2
      packages/admin-ui/src/lib/settings/src/providers/routing/shipping-method-resolver.ts
  35. 4 5
      packages/admin-ui/src/lib/settings/src/providers/routing/tax-category-resolver.ts
  36. 3 1
      packages/admin-ui/src/lib/settings/src/providers/routing/tax-rate-resolver.ts
  37. 0 20
      packages/admin-ui/src/lib/settings/src/settings.module.ts

+ 0 - 14
packages/admin-ui/src/lib/catalog/src/catalog.module.ts

@@ -25,12 +25,6 @@ import { ProductVariantsListComponent } from './components/product-variants-list
 import { ProductVariantsTableComponent } from './components/product-variants-table/product-variants-table.component';
 import { UpdateProductOptionDialogComponent } from './components/update-product-option-dialog/update-product-option-dialog.component';
 import { VariantPriceDetailComponent } from './components/variant-price-detail/variant-price-detail.component';
-import { ProductDetailService } from './providers/product-detail.service';
-import { AssetResolver } from './providers/routing/asset-resolver';
-import { CollectionResolver } from './providers/routing/collection-resolver';
-import { FacetResolver } from './providers/routing/facet-resolver';
-import { ProductResolver } from './providers/routing/product-resolver';
-import { ProductVariantsResolver } from './providers/routing/product-variants-resolver';
 
 @NgModule({
     imports: [SharedModule, RouterModule.forChild(catalogRoutes)],
@@ -59,13 +53,5 @@ import { ProductVariantsResolver } from './providers/routing/product-variants-re
         AssignProductsToChannelDialogComponent,
         AssetDetailComponent,
     ],
-    providers: [
-        ProductResolver,
-        FacetResolver,
-        CollectionResolver,
-        ProductDetailService,
-        ProductVariantsResolver,
-        AssetResolver,
-    ],
 })
 export class CatalogModule {}

+ 8 - 6
packages/admin-ui/src/lib/catalog/src/providers/product-detail.service.ts

@@ -1,9 +1,4 @@
 import { Injectable } from '@angular/core';
-import { normalizeString } from '@vendure/common/lib/normalize-string';
-import { notNullOrUndefined } from '@vendure/common/lib/shared-utils';
-import { BehaviorSubject, forkJoin, Observable, of, throwError } from 'rxjs';
-import { map, mergeMap, shareReplay, skip, switchMap } from 'rxjs/operators';
-
 import {
     CreateProductInput,
     CreateProductVariantInput,
@@ -18,13 +13,20 @@ import {
     UpdateProductVariantsMutation,
 } from '@vendure/admin-ui/core';
 import { DataService } from '@vendure/admin-ui/core';
+import { normalizeString } from '@vendure/common/lib/normalize-string';
+import { notNullOrUndefined } from '@vendure/common/lib/shared-utils';
+import { BehaviorSubject, forkJoin, Observable, of, throwError } from 'rxjs';
+import { map, mergeMap, shareReplay, skip, switchMap } from 'rxjs/operators';
+
 import { CreateProductVariantsConfig } from '../components/generate-product-variants/generate-product-variants.component';
 
 /**
  * Handles the logic for making the API calls to perform CRUD operations on a Product and its related
  * entities. This logic was extracted out of the component because it became too large and hard to follow.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class ProductDetailService {
     private facetsSubject = new BehaviorSubject<FacetWithValues.Fragment[]>([]);
 

+ 3 - 1
packages/admin-ui/src/lib/catalog/src/providers/routing/asset-resolver.ts

@@ -3,7 +3,9 @@ import { Router } from '@angular/router';
 import { Asset, AssetType, BaseEntityResolver } from '@vendure/admin-ui/core';
 import { DataService } from '@vendure/admin-ui/core';
 
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class AssetResolver extends BaseEntityResolver<Asset.Fragment> {
     constructor(router: Router, dataService: DataService) {
         super(

+ 3 - 1
packages/admin-ui/src/lib/catalog/src/providers/routing/collection-resolver.ts

@@ -5,7 +5,9 @@ import { Collection, ProductWithVariants } from '@vendure/admin-ui/core';
 import { getDefaultLanguage } from '@vendure/admin-ui/core';
 import { DataService } from '@vendure/admin-ui/core';
 
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class CollectionResolver extends BaseEntityResolver<Collection.Fragment> {
     constructor(router: Router, dataService: DataService) {
         super(

+ 3 - 2
packages/admin-ui/src/lib/catalog/src/providers/routing/facet-resolver.ts

@@ -1,12 +1,13 @@
 import { Injectable } from '@angular/core';
 import { Router } from '@angular/router';
-
 import { BaseEntityResolver } from '@vendure/admin-ui/core';
 import { FacetWithValues } from '@vendure/admin-ui/core';
 import { getDefaultLanguage } from '@vendure/admin-ui/core';
 import { DataService } from '@vendure/admin-ui/core';
 
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class FacetResolver extends BaseEntityResolver<FacetWithValues.Fragment> {
     constructor(router: Router, dataService: DataService) {
         super(

+ 3 - 2
packages/admin-ui/src/lib/catalog/src/providers/routing/product-resolver.ts

@@ -1,12 +1,13 @@
 import { Injectable } from '@angular/core';
 import { Router } from '@angular/router';
-
 import { BaseEntityResolver } from '@vendure/admin-ui/core';
 import { ProductWithVariants } from '@vendure/admin-ui/core';
 import { getDefaultLanguage } from '@vendure/admin-ui/core';
 import { DataService } from '@vendure/admin-ui/core';
 
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class ProductResolver extends BaseEntityResolver<ProductWithVariants.Fragment> {
     constructor(dataService: DataService, router: Router) {
         super(

+ 3 - 2
packages/admin-ui/src/lib/catalog/src/providers/routing/product-variants-resolver.ts

@@ -1,11 +1,12 @@
 import { Injectable } from '@angular/core';
 import { Router } from '@angular/router';
-
 import { BaseEntityResolver } from '@vendure/admin-ui/core';
 import { GetProductVariantOptions } from '@vendure/admin-ui/core';
 import { DataService } from '@vendure/admin-ui/core';
 
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class ProductVariantsResolver extends BaseEntityResolver<GetProductVariantOptions.Product> {
     constructor(router: Router, dataService: DataService) {
         super(

+ 1 - 1
packages/admin-ui/src/lib/core/src/common/version.ts

@@ -1,2 +1,2 @@
 // Auto-generated by the set-version.js script.
-export const ADMIN_UI_VERSION = '0.9.11';
+export const ADMIN_UI_VERSION = '0.10.6';

+ 0 - 19
packages/admin-ui/src/lib/core/src/core.module.ts

@@ -17,17 +17,9 @@ import { UiLanguageSwitcherComponent } from './components/ui-language-switcher/u
 import { UserMenuComponent } from './components/user-menu/user-menu.component';
 import { DataModule } from './data/data.module';
 import { DataService } from './data/providers/data.service';
-import { AuthService } from './providers/auth/auth.service';
-import { CustomFieldComponentService } from './providers/custom-field-component/custom-field-component.service';
-import { AuthGuard } from './providers/guard/auth.guard';
 import { CustomHttpTranslationLoader } from './providers/i18n/custom-http-loader';
 import { InjectableTranslateMessageFormatCompiler } from './providers/i18n/custom-message-format-compiler';
 import { I18nService } from './providers/i18n/i18n.service';
-import { JobQueueService } from './providers/job-queue/job-queue.service';
-import { LocalStorageService } from './providers/local-storage/local-storage.service';
-import { NavBuilderService } from './providers/nav-builder/nav-builder.service';
-import { NotificationService } from './providers/notification/notification.service';
-import { OverlayHostService } from './providers/overlay-host/overlay-host.service';
 import { SharedModule } from './shared/shared.module';
 
 @NgModule({
@@ -46,17 +38,6 @@ import { SharedModule } from './shared/shared.module';
         }),
     ],
     exports: [SharedModule, OverlayHostComponent],
-    providers: [
-        LocalStorageService,
-        AuthGuard,
-        AuthService,
-        I18nService,
-        OverlayHostService,
-        NotificationService,
-        JobQueueService,
-        NavBuilderService,
-        CustomFieldComponentService,
-    ],
     declarations: [
         AppShellComponent,
         UserMenuComponent,

+ 3 - 1
packages/admin-ui/src/lib/core/src/providers/auth/auth.service.ts

@@ -11,7 +11,9 @@ import { LocalStorageService } from '../local-storage/local-storage.service';
 /**
  * This service handles logic relating to authentication of the current user.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class AuthService {
     constructor(
         private localStorageService: LocalStorageService,

+ 3 - 1
packages/admin-ui/src/lib/core/src/providers/custom-field-component/custom-field-component.service.ts

@@ -21,7 +21,9 @@ export type CustomFieldEntityName = Exclude<keyof CustomFields, '__typename'>;
 /**
  * This service allows the registration of custom controls for customFields.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class CustomFieldComponentService {
     private registry: { [K in CustomFieldEntityName]?: { [name: string]: Type<CustomFieldControl> } } = {};
 

+ 3 - 1
packages/admin-ui/src/lib/core/src/providers/guard/auth.guard.ts

@@ -9,7 +9,9 @@ import { AuthService } from '../auth/auth.service';
  * This guard prevents unauthorized users from accessing any routes which require
  * authorization.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class AuthGuard implements CanActivate {
     constructor(private router: Router, private authService: AuthService) {}
 

+ 4 - 1
packages/admin-ui/src/lib/core/src/providers/i18n/i18n.service.ts

@@ -1,8 +1,11 @@
 import { Injectable } from '@angular/core';
 import { TranslateService } from '@ngx-translate/core';
+
 import { LanguageCode } from '../../common/generated-types';
 
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class I18nService {
     constructor(private ngxTranslate: TranslateService) {}
 

+ 3 - 1
packages/admin-ui/src/lib/core/src/providers/job-queue/job-queue.service.ts

@@ -5,7 +5,9 @@ import { debounceTime, map, mapTo, scan, shareReplay, switchMap } from 'rxjs/ope
 import { JobInfoFragment, JobState } from '../../common/generated-types';
 import { DataService } from '../../data/providers/data.service';
 
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class JobQueueService implements OnDestroy {
     activeJobs$: Observable<JobInfoFragment[]>;
 

+ 3 - 1
packages/admin-ui/src/lib/core/src/providers/local-storage/local-storage.service.ts

@@ -8,7 +8,9 @@ const PREFIX = 'vnd_';
 /**
  * Wrapper around the browser's LocalStorage / SessionStorage object, for persisting data to the browser.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class LocalStorageService {
     constructor(private location: Location) {}
     /**

+ 3 - 1
packages/admin-ui/src/lib/core/src/providers/modal/modal.service.ts

@@ -56,7 +56,9 @@ export interface ModalOptions<T> {
  * This service is responsible for instantiating a ModalDialog component and
  * embedding the specified component within.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class ModalService {
     constructor(
         private componentFactoryResolver: ComponentFactoryResolver,

+ 4 - 4
packages/admin-ui/src/lib/core/src/providers/nav-builder/nav-builder.service.ts

@@ -10,7 +10,9 @@ import { ActionBarItem, NavMenuItem, NavMenuSection, RouterLinkDefinition } from
 /**
  * This service is used to define the contents of configurable menus in the application.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class NavBuilderService {
     navMenuConfig$: Observable<NavMenuSection[]>;
     actionBarConfig$: Observable<ActionBarItem[]>;
@@ -107,9 +109,7 @@ export class NavBuilderService {
                     if (!section) {
                         // tslint:disable-next-line:no-console
                         console.error(
-                            `Could not add menu item "${item.config.id}", section "${
-                                item.sectionId
-                            }" does not exist`,
+                            `Could not add menu item "${item.config.id}", section "${item.sectionId}" does not exist`,
                         );
                     } else {
                         const index = section.items.findIndex(i => i.id === item.before);

+ 3 - 1
packages/admin-ui/src/lib/core/src/providers/notification/notification.service.ts

@@ -18,7 +18,9 @@ const TOAST_DURATION = 3000;
 /**
  * Provides toast notification functionality.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class NotificationService {
     private get hostView(): Promise<ViewContainerRef> {
         return this.overlayHostService.getHostView();

+ 3 - 1
packages/admin-ui/src/lib/core/src/providers/overlay-host/overlay-host.service.ts

@@ -5,7 +5,9 @@ import { Injectable, ViewContainerRef } from '@angular/core';
  * OverlayHost component, so that other components may insert components & elements
  * into the DOM at that point.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class OverlayHostService {
     private hostView: ViewContainerRef;
     private promiseResolveFns: Array<(result: any) => void> = [];

+ 0 - 2
packages/admin-ui/src/lib/customer/src/customer.module.ts

@@ -7,7 +7,6 @@ import { CustomerDetailComponent } from './components/customer-detail/customer-d
 import { CustomerListComponent } from './components/customer-list/customer-list.component';
 import { CustomerStatusLabelComponent } from './components/customer-status-label/customer-status-label.component';
 import { customerRoutes } from './customer.routes';
-import { CustomerResolver } from './providers/routing/customer-resolver';
 
 @NgModule({
     imports: [SharedModule, RouterModule.forChild(customerRoutes)],
@@ -17,7 +16,6 @@ import { CustomerResolver } from './providers/routing/customer-resolver';
         CustomerStatusLabelComponent,
         AddressCardComponent,
     ],
-    providers: [CustomerResolver],
     exports: [AddressCardComponent],
 })
 export class CustomerModule {}

+ 3 - 2
packages/admin-ui/src/lib/customer/src/providers/routing/customer-resolver.ts

@@ -1,11 +1,12 @@
 import { Injectable } from '@angular/core';
 import { Router } from '@angular/router';
-
 import { BaseEntityResolver } from '@vendure/admin-ui/core';
 import { Customer } from '@vendure/admin-ui/core';
 import { DataService } from '@vendure/admin-ui/core';
 
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class CustomerResolver extends BaseEntityResolver<Customer.Fragment> {
     constructor(router: Router, dataService: DataService) {
         super(

+ 0 - 2
packages/admin-ui/src/lib/login/src/login.module.ts

@@ -4,12 +4,10 @@ import { SharedModule } from '@vendure/admin-ui/core';
 
 import { LoginComponent } from './components/login/login.component';
 import { loginRoutes } from './login.routes';
-import { LoginGuard } from './providers/login.guard';
 
 @NgModule({
     imports: [SharedModule, RouterModule.forChild(loginRoutes)],
     exports: [],
     declarations: [LoginComponent],
-    providers: [LoginGuard],
 })
 export class LoginModule {}

+ 3 - 1
packages/admin-ui/src/lib/login/src/providers/login.guard.ts

@@ -7,7 +7,9 @@ import { map } from 'rxjs/operators';
 /**
  * This guard prevents loggen-in users from navigating to the login screen.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class LoginGuard implements CanActivate {
     constructor(private router: Router, private authService: AuthService) {}
 

+ 0 - 2
packages/admin-ui/src/lib/marketing/src/marketing.module.ts

@@ -5,11 +5,9 @@ import { SharedModule } from '@vendure/admin-ui/core';
 import { PromotionDetailComponent } from './components/promotion-detail/promotion-detail.component';
 import { PromotionListComponent } from './components/promotion-list/promotion-list.component';
 import { marketingRoutes } from './marketing.routes';
-import { PromotionResolver } from './providers/routing/promotion-resolver';
 
 @NgModule({
     imports: [SharedModule, RouterModule.forChild(marketingRoutes)],
     declarations: [PromotionListComponent, PromotionDetailComponent],
-    providers: [PromotionResolver],
 })
 export class MarketingModule {}

+ 4 - 5
packages/admin-ui/src/lib/marketing/src/providers/routing/promotion-resolver.ts

@@ -1,14 +1,13 @@
 import { Injectable } from '@angular/core';
 import { Router } from '@angular/router';
-
-import { BaseEntityResolver } from '@vendure/admin-ui/core';
-import { Promotion } from '@vendure/admin-ui/core';
-import { DataService } from '@vendure/admin-ui/core';
+import { BaseEntityResolver, DataService, Promotion } from '@vendure/admin-ui/core';
 
 /**
  * Resolves the id from the path into a Customer entity.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class PromotionResolver extends BaseEntityResolver<Promotion.Fragment> {
     constructor(router: Router, dataService: DataService) {
         super(

+ 0 - 2
packages/admin-ui/src/lib/order/src/order.module.ts

@@ -20,7 +20,6 @@ import { RefundStateLabelComponent } from './components/refund-state-label/refun
 import { SettleRefundDialogComponent } from './components/settle-refund-dialog/settle-refund-dialog.component';
 import { SimpleItemListComponent } from './components/simple-item-list/simple-item-list.component';
 import { orderRoutes } from './order.routes';
-import { OrderResolver } from './providers/routing/order-resolver';
 
 @NgModule({
     imports: [SharedModule, RouterModule.forChild(orderRoutes)],
@@ -43,6 +42,5 @@ import { OrderResolver } from './providers/routing/order-resolver';
         SimpleItemListComponent,
         OrderCustomFieldsCardComponent,
     ],
-    providers: [OrderResolver],
 })
 export class OrderModule {}

+ 3 - 2
packages/admin-ui/src/lib/order/src/providers/routing/order-resolver.ts

@@ -1,6 +1,5 @@
 import { Injectable } from '@angular/core';
 import { Router } from '@angular/router';
-
 import { BaseEntityResolver } from '@vendure/admin-ui/core';
 import { OrderDetail } from '@vendure/admin-ui/core';
 import { DataService } from '@vendure/admin-ui/core';
@@ -8,7 +7,9 @@ import { DataService } from '@vendure/admin-ui/core';
 /**
  * Resolves the id from the path into a Customer entity.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class OrderResolver extends BaseEntityResolver<OrderDetail.Fragment> {
     constructor(router: Router, dataService: DataService) {
         super(

+ 3 - 2
packages/admin-ui/src/lib/settings/src/providers/routing/administrator-resolver.ts

@@ -1,11 +1,12 @@
 import { Injectable } from '@angular/core';
 import { Router } from '@angular/router';
-
 import { BaseEntityResolver } from '@vendure/admin-ui/core';
 import { Administrator, Role } from '@vendure/admin-ui/core';
 import { DataService } from '@vendure/admin-ui/core';
 
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class AdministratorResolver extends BaseEntityResolver<Administrator.Fragment> {
     constructor(router: Router, dataService: DataService) {
         super(

+ 3 - 2
packages/admin-ui/src/lib/settings/src/providers/routing/channel-resolver.ts

@@ -1,6 +1,5 @@
 import { Injectable } from '@angular/core';
 import { Router } from '@angular/router';
-
 import { BaseEntityResolver } from '@vendure/admin-ui/core';
 import { Channel, CurrencyCode } from '@vendure/admin-ui/core';
 import { getDefaultLanguage } from '@vendure/admin-ui/core';
@@ -9,7 +8,9 @@ import { DataService } from '@vendure/admin-ui/core';
 /**
  * Resolves the id from the path into a Customer entity.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class ChannelResolver extends BaseEntityResolver<Channel.Fragment> {
     constructor(router: Router, dataService: DataService) {
         super(

+ 3 - 2
packages/admin-ui/src/lib/settings/src/providers/routing/country-resolver.ts

@@ -1,6 +1,5 @@
 import { Injectable } from '@angular/core';
 import { Router } from '@angular/router';
-
 import { BaseEntityResolver } from '@vendure/admin-ui/core';
 import { Country } from '@vendure/admin-ui/core';
 import { DataService } from '@vendure/admin-ui/core';
@@ -8,7 +7,9 @@ import { DataService } from '@vendure/admin-ui/core';
 /**
  * Resolves the id from the path into a Customer entity.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class CountryResolver extends BaseEntityResolver<Country.Fragment> {
     constructor(router: Router, dataService: DataService) {
         super(

+ 3 - 2
packages/admin-ui/src/lib/settings/src/providers/routing/global-settings-resolver.ts

@@ -1,6 +1,5 @@
 import { Injectable } from '@angular/core';
 import { Router } from '@angular/router';
-
 import { BaseEntityResolver } from '@vendure/admin-ui/core';
 import { GetGlobalSettings } from '@vendure/admin-ui/core';
 import { DataService } from '@vendure/admin-ui/core';
@@ -8,7 +7,9 @@ import { DataService } from '@vendure/admin-ui/core';
 /**
  * Resolves the global settings.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class GlobalSettingsResolver extends BaseEntityResolver<GetGlobalSettings.GlobalSettings> {
     constructor(router: Router, dataService: DataService) {
         super(

+ 3 - 2
packages/admin-ui/src/lib/settings/src/providers/routing/payment-method-resolver.ts

@@ -1,6 +1,5 @@
 import { Injectable } from '@angular/core';
 import { Router } from '@angular/router';
-
 import { BaseEntityResolver } from '@vendure/admin-ui/core';
 import { PaymentMethod } from '@vendure/admin-ui/core';
 import { DataService } from '@vendure/admin-ui/core';
@@ -8,7 +7,9 @@ import { DataService } from '@vendure/admin-ui/core';
 /**
  * Resolves the id from the path into a Customer entity.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class PaymentMethodResolver extends BaseEntityResolver<PaymentMethod.Fragment> {
     constructor(router: Router, dataService: DataService) {
         super(

+ 3 - 2
packages/admin-ui/src/lib/settings/src/providers/routing/role-resolver.ts

@@ -1,11 +1,12 @@
 import { Injectable } from '@angular/core';
 import { Router } from '@angular/router';
-
 import { BaseEntityResolver } from '@vendure/admin-ui/core';
 import { Role } from '@vendure/admin-ui/core';
 import { DataService } from '@vendure/admin-ui/core';
 
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class RoleResolver extends BaseEntityResolver<Role.Fragment> {
     constructor(router: Router, dataService: DataService) {
         super(

+ 3 - 2
packages/admin-ui/src/lib/settings/src/providers/routing/shipping-method-resolver.ts

@@ -1,6 +1,5 @@
 import { Injectable } from '@angular/core';
 import { Router } from '@angular/router';
-
 import { BaseEntityResolver } from '@vendure/admin-ui/core';
 import { ShippingMethod } from '@vendure/admin-ui/core';
 import { DataService } from '@vendure/admin-ui/core';
@@ -8,7 +7,9 @@ import { DataService } from '@vendure/admin-ui/core';
 /**
  * Resolves the id from the path into a Customer entity.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class ShippingMethodResolver extends BaseEntityResolver<ShippingMethod.Fragment> {
     constructor(router: Router, dataService: DataService) {
         super(

+ 4 - 5
packages/admin-ui/src/lib/settings/src/providers/routing/tax-category-resolver.ts

@@ -1,14 +1,13 @@
 import { Injectable } from '@angular/core';
 import { Router } from '@angular/router';
-
-import { BaseEntityResolver } from '@vendure/admin-ui/core';
-import { TaxCategory } from '@vendure/admin-ui/core';
-import { DataService } from '@vendure/admin-ui/core';
+import { BaseEntityResolver, DataService, TaxCategory } from '@vendure/admin-ui/core';
 
 /**
  * Resolves the id from the path into a Customer entity.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class TaxCategoryResolver extends BaseEntityResolver<TaxCategory.Fragment> {
     constructor(router: Router, dataService: DataService) {
         super(

+ 3 - 1
packages/admin-ui/src/lib/settings/src/providers/routing/tax-rate-resolver.ts

@@ -5,7 +5,9 @@ import { BaseEntityResolver, DataService, TaxRate } from '@vendure/admin-ui/core
 /**
  * Resolves the id from the path into a Customer entity.
  */
-@Injectable()
+@Injectable({
+    providedIn: 'root',
+})
 export class TaxRateResolver extends BaseEntityResolver<TaxRate.Fragment> {
     constructor(router: Router, dataService: DataService) {
         super(

+ 0 - 20
packages/admin-ui/src/lib/settings/src/settings.module.ts

@@ -25,15 +25,6 @@ import { TaxRateListComponent } from './components/tax-rate-list/tax-rate-list.c
 import { TestAddressFormComponent } from './components/test-address-form/test-address-form.component';
 import { TestOrderBuilderComponent } from './components/test-order-builder/test-order-builder.component';
 import { ZoneSelectorDialogComponent } from './components/zone-selector-dialog/zone-selector-dialog.component';
-import { AdministratorResolver } from './providers/routing/administrator-resolver';
-import { ChannelResolver } from './providers/routing/channel-resolver';
-import { CountryResolver } from './providers/routing/country-resolver';
-import { GlobalSettingsResolver } from './providers/routing/global-settings-resolver';
-import { PaymentMethodResolver } from './providers/routing/payment-method-resolver';
-import { RoleResolver } from './providers/routing/role-resolver';
-import { ShippingMethodResolver } from './providers/routing/shipping-method-resolver';
-import { TaxCategoryResolver } from './providers/routing/tax-category-resolver';
-import { TaxRateResolver } from './providers/routing/tax-rate-resolver';
 import { settingsRoutes } from './settings.routes';
 
 @NgModule({
@@ -63,16 +54,5 @@ import { settingsRoutes } from './settings.routes';
         ShippingMethodTestResultComponent,
         ShippingEligibilityTestResultComponent,
     ],
-    providers: [
-        TaxCategoryResolver,
-        AdministratorResolver,
-        RoleResolver,
-        CountryResolver,
-        TaxRateResolver,
-        ChannelResolver,
-        ShippingMethodResolver,
-        PaymentMethodResolver,
-        GlobalSettingsResolver,
-    ],
 })
 export class SettingsModule {}