angular - 从 ng-content 访问 @ViewChild 模板

标签 angular

是否可以将模板与 ng-content 结合使用,如下所述:

应用组件:

<table-column>
  <template #template let-item="item">
    <input type="text" [(ngModel)]="item.foo" />
  </template>
</table-column>

表格列组件:

@Component({
  selector: 'table-column',
  template: '<ng-content></ng-content>'
})
export class TableColumnComponent implements OnInit {
  @ViewChild('template') template;  

  ngOnInit() {
    console.log(this.template); // undefined
    // create column object with template and different metadata...
  });      
}

Plunker

我使用不同的生命周期 Hook (ngOnInit、ngAfterViewInit)得到undefined的问题...

最佳答案

如果你想在 Light DOM 中搜索,那么你需要使用 @ContentChild 并等待 ngAfterContentInit hook

@ContentChild('template') template;  

ngAfterContentInit() {
  console.log(this.template);
}

另见

关于angular - 从 ng-content 访问 @ViewChild 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43187409/

相关文章:

javascript - Angular2 cookie 而不是本地存储

Angular2,包含组件模块而不是单独包含所有组件

javascript - 根据使用位置自定义 Angular2/4 中的组件

Angular 4 如何共享变量

angular - 如何让 Angular 2 获取动态添加的 routerLink 指令

javascript - 用于仪表板应用程序的 Angular 7 多个路由器 socket

javascript - 无法获取 Angular 其余结果

angular - Firefox 中 Angular 6 的屏幕共享

javascript - 拒绝 Resolve 即服务中的 Promise

typescript - $event 对象在 Angular 2 中到底做什么?