访问模板元素内的模板引用

时间:2017-03-01 14:37:50

标签: angular angular2-template

我使用的库希望我将指令的主体指定为template元素的子元素

<template customDirective>
   <custom-element #lookup></custom-element>
</template>

有没有办法在我的组件中访问custom-element#lookup

例如,

@Component({
  selector: 'app-test',
  template: `
    <template customDirective>
       <custom-element #lookup></custom-element>
    </template>
  `
})
export class TestComponent {
  @ViewChild('lookup') viewChildRef;
  @ContentChild('lookup') contentChildRef;

  constructor() {
  }

  ngAfterContentInit(): void {
     console.log(this.viewChildRef); // <-- undefined
     console.log(this.contentChildRef); // <-- undefined
  }
}

我在两种情况下都获得undefined

2 个答案:

答案 0 :(得分:9)

在您不创建嵌入视图之前,您无法获得模板内部组件的引用。

尝试使用setter:

@ViewChild('lookup') 
set lookUp(ref: any) {
  console.log(ref);
}

<强> Plunker Example

答案 1 :(得分:1)

尝试查看lookedUpCustomElemRef回调内的ngAfterViewInit

https://angular.io/docs/ts/latest/api/core/index/ViewChild-decorator.html