11

我正在尝试使用 ViewChild 获取子组件的元素,但找不到实现此目的的方法。

让我们在模板中说:

...
<some-comp #someComp></some-comp>
...

并通过以下方式获得此参考:

import { SomeComponent } from './some-comp/some-comp.component';
...
@ViewChild('someComp') someComp: SomeComponent;
...
ngOnInit() {
// this.someComp.nativeElement? <-- how to get nativeElement?
}

我尝试这样做的原因是通过使用scrollToHTMLElement 的功能自动滚动到该子组件的位置来将视图聚焦到该子组件。(请参阅单击时如何将元素滚动到视图中

我可以通过为该子组件提供 id 并使用 document.getElementById() 检索来实现它,但我想知道是否有办法使用模板引用变量或任何角度方式来做到这一点。

提前致谢!

4

1 回答 1

17

@ViewChild装饰器可以查询可以使用read参数指定的几种不同类型:

@ViewChild(selector, {read: Type}) property;

这些类型可以是:

  • 元素引用

    @ViewChild('someComp', {read: ElementRef}) someComp;

  • ViewContainerRef

    @ViewChild('someComp', {read: ViewContainerRef}) someComp;

在你的情况下,这ElementRef是你想要的。

于 2017-05-19T04:22:14.033 回答