Получить ElementRef из экземпляра компонента - PullRequest
0 голосов
/ 04 марта 2020

В моей библиотеке Angular есть код, подобный приведенному ниже:

test.component. html:

<third-party-component #tpComponent></third-party-component>
<my-component [tp-component]="tpComponent"></my-component>

my-component.component.ts:

import { Component, Input, OnInit } from '@angular/core';
import { ThirdPartyComponent } from '@3rd/party-library';

@Component({
  selector: 'my-component',
  templateUrl: './my-component.component.html',
  styleUrls: ['./my-component.component.css']
})
export class MyComponent implements OnInit {
  @Input('tp-component') tpComponent: ThirdPartyComponent;

  ngOnInit() {
    this.tpComponent.doSomething();
  }
}

Я ищу способ (если он есть) для доступа к ElementRef из экземпляра ThirdParyComponent, переданного как свойство @Input - к сожалению, я не могу изменить ThirdParyComponent на выставить свой собственный ElementRef.

PS: я знаю, что могу создать метод на MyComponent для установки как экземпляра ThirdParyComponent, так и его ElementRef, но я бы хотел упростить это с помощью @Input.

Есть ли способ добиться этого?

1 Ответ

0 голосов
/ 04 марта 2020

В корпусе компонента и third-party-component, и my-component вы можете сделать:

@ViewChild('tpComponent') tpComponentElementRef: ElementRef;
....
<my-component [tp-component]="tpComponent" 
              [tp-component-elementRef]="tpComponentElementRef"></my-component>
....
@Input('tp-component') tpComponent: ThirdPartyComponent;
@Input('tp-component-elementRef') tpComponentElementRef: ElementRef;

Как-то так?

...