Доступ к 'this' (экземпляру компонента) из шаблона - PullRequest
0 голосов
/ 27 ноября 2018

Предположим, нам нужно связать некоторое свойство дочернего компонента с самим экземпляром компонента в шаблоне:

<child-component parent="???"></child-component1>

Есть ли способ сделать это, кроме объявления выделенного свойства в родительском компоненте:

public thisInstance: ParentComponent = this;

и затем его использование:

<child-component parent="thisInstance"></child-component1>

?

ОБНОВЛЕНИЕ 1 : я ищу способ, который позволил бы определенно предоставить родителядля ребенка, что означает, что если у ребенка есть два или более родителей одного и того же типа компонента на разных уровнях иерархии, мы сможем точно указать, какой из них следует использовать.

ОБНОВЛЕНИЕ 2 : я ищу подход, не ограничивающий ребенка, какой именно тип родителя может быть использован.Поэтому я не уверен, будет ли работать вставка родителя в конструктор потомка с использованием некоторого базового класса (который реализуется родителем) в качестве токена.

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

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

export class childComponent{
  constructor(private parent: ParentComponent){}
}

Чтобы разместить оба обновления, вы можете создать класс инъекции службы и назначить экземпляр родительского компонента в родительском компоненте oninit (), то же самоеЭкземпляр будет использоваться в дочернем компоненте.

@Injectable()
export class Service{
  private compInstance;
  setComponentInstance(_instance){
    this.compInstance = _instance;
  }
  getComponentInstance(_instance){
    this.compInstance = _instance;
  }
}

Родительский компонент

export class Parent{
    this.service.setComponentInstance(this);
}

Дочерний компонент:

this.service.getComponentInstance();
0 голосов
/ 27 ноября 2018

Вы можете попробовать связать HTML с #selector, например:

<child-component1 #parent [parent]="parent"></child-component1>

И затем вы можете объявить родителя как @Input () в child-component1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...