Внедрить объект в динамически созданный конструктор компонента - PullRequest
1 голос
/ 18 апреля 2019

У меня есть компонент Angular 7:

export class HelloComponent {
  constructor(private data: any) {}
}

И я создаю его динамически, используя ComponentFactoryResolver:

private create(data: any) {

  var componentRef = this.componentFactoryResolver
    .resolveComponentFactory(HelloComponent)
    .create(this.injector);

  this.appRef.attachView(componentRef.hostView);

  var element = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;

}

Как внедрить data объект в конструктор HelloComponent?

1 Ответ

1 голос
/ 18 апреля 2019

Вы должны использовать специальный инжектор для этого

const injector: Injector = ReflectiveInjector.resolveAndCreate(
[{
     provide: 'config', useValue: { 
     value: 'Any value or object here'}
}]);

, а в вашем компоненте использовать этот

export class HelloComponent {
  constructor(@Inject('config') private data: any) {}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...