【发布时间】:2020-06-10 08:02:36
【问题描述】:
所以我有一个输入字段,我想专注于 Angular 应用程序中的负载。我读到 Renderer2 方式是这样做的好方法,如果我像这样在点击时调用该函数,它就可以工作:
focusMyInput() {
this.renderer.selectRootElement('#myInput').focus();
}
但是如果我尝试让它专注于负载,像这样:
ngAfterViewInit() {
this.renderer.selectRootElement('#myInput').focus();
}
它会抛出一个错误:
The selector "#myInput" did not match any elements
at DefaultDomRenderer2.selectRootElement
HTML:
<input id="myInput" />
知道这背后的原因是什么吗?
【问题讨论】:
-
你能不能把 html element anf viewchild 代码行也提个问题?
-
这里没有 ViewChild 但有一个带有 ID 的输入标签,这是文章:onthecode.co.uk/…
-
在 ngAfterViewInit 触发时,您的输入可能尚未初始化。可能是输入在带有 *ngIf 的块内。分享您的 html 会有所帮助。
-
实际上它在 *ngIf 内部,this.renderer.selectRootElement(this.myInput.nativeElement)"返回该输入字段,但如果我尝试应用 focus() 它会引发相同的未定义错误,更长的超时没有帮助......
标签: javascript angular typescript angular8 angular-renderer2