【发布时间】:2017-08-19 21:41:03
【问题描述】:
我有一个输入字段,当我的视图以下列方式加载时,我将其设置为焦点:
ngAfterViewInit() {
this.focusInput.nativeElement.focus();
}
这在 ngAfterViewInit() 函数中可以正常工作,但是当我尝试在视图的另一部分中执行此操作时,单击按钮时出现异常,指出 focusInput 未定义。在阅读了一下之后,似乎 ngIf 可能是导致此问题的原因,因为包含输入字段#focusInput 的视图部分使用 ngIf 显示或隐藏。有什么方法可以使用 ngOnChanges() 或其他任何方法检查 #focusInput 输入字段是否当前显示以及是否将其设置为焦点?
【问题讨论】:
-
尝试使用setter stackoverflow.com/questions/42534524/…
-
@yurzui 我不完全明白。所以我可以在使用 setter 函数设置焦点之前设置对该 html 输入字段的引用?
-
创建演示您的问题的 plunker。正如你所说,你使用ngIf。这就是为什么当 ngIf 返回 false 时您的引用为 null 的原因。
setter将帮助您识别引用是否未定义 -
问题是当我尝试设置焦点时,该元素会显示出来,因此无济于事。它似乎只在 ngAfterViewInit() 中定义。有没有办法让我使用设置器重新初始化它,所以它不是未定义的?hel
-
在setter中你会得到价值。如果它不是未定义的,你可以设置焦点