File

projects/atft/src/lib/actor/data-center/service/actor-repository.service.ts

Index

Properties
Methods

Constructor

constructor(resolver: ComponentFactoryResolver)
Parameters :
Name Type Optional
resolver ComponentFactoryResolver No

Methods

Public getComponentFactory
getComponentFactory(id: string | undefined)
Parameters :
Name Type Optional
id string | undefined No
Returns : ComponentFactory | undefined
Public register
register(id: string, component: Type)
Parameters :
Name Type Optional
id string No
component Type<any> No
Returns : void

Properties

Protected defaultId
Type : string
Protected list
Default value : new Map<string, Type<any>>()
import {ComponentFactory, ComponentFactoryResolver, Injectable, Type} from '@angular/core';
import {
  ServerBarrelActorComponent,
  ServerCompactActorComponent,
  ServerIconActorComponent,
  ServerStandActorComponent, ModelActorComponent,
  WorkstationActorComponent
} from '../server';


@Injectable()
export class ActorRepositoryService {

  protected list = new Map<string, Type<any>>();
  protected defaultId!: string;

  constructor(
    //TODO: https://stackoverflow.com/questions/70946038/replace-deprecated-angular-componentfactoryresolver-componentfactory
    protected resolver: ComponentFactoryResolver
  ) {
    this.register('stand', ServerStandActorComponent);
    this.register('compact', ServerCompactActorComponent);
    this.register('barrel', ServerBarrelActorComponent);
    this.register('icon', ServerIconActorComponent);
    this.register('workstation', WorkstationActorComponent);
    this.register('model', ModelActorComponent);
  }

  public register(id: string, component: Type<any>): void {
    // console.log('ActorRepositoryService.register', id);
    if (!this.defaultId) {
      this.defaultId = id;
    }
    this.list.set(id, component);
  }

  public getComponentFactory(id: string | undefined): ComponentFactory<any> | undefined {
    const requestId :string = id ? id : this.defaultId
    // console.log('ActorRepositoryService.getComponentFactory requestId:', requestId);
    const comp = this.list.get(requestId);
    if (comp) {
      const result = this.resolver.resolveComponentFactory(comp);
      // console.log('ActorRepositoryService.getComponentFactory result', result);
      return result;
    } else {
      // console.log('ActorRepositoryService.getComponentFactory undefined result');
      return undefined;
    }
  }

}

results matching ""

    No results matching ""