我正在尝试将焦点设置到有条件呈现的输入控件。我正在设置ElementReference
,但它的ID和上下文都为空。
<button @onclick="ToggleInput">Show input</button>
@if(showInput) {
<input @ref="inputRef" type="text"/>
}
@code {
private ElementReference inputRef;
private bool showInput;
async void ToggleInput() {
showInput = !showInput;
await inputRef.FocusAsync();
}
}
当我按下按钮时,它在控制台中显示此错误:
系统操作无效异常:未正确配置ElementReference
完整的错误消息:
4条答案
按热度按时间daolsyd01#
这似乎是工作,并不一定是一个单独的组件。我把它的权利,在开始页。
dtcbnfnu2#
将输入框移到另一个组件上,然后可以挂钩到组件的生命周期中,并在呈现后调用
.FocusAsync
。https://blazorrepl.com/repl/cluoEsvU59fl8zYM22
sqougxex3#
这也不是一个完美的解决方案,更像是一个变通方案,但以下方法对我很有效:
在我的测试中,上下文从来都不是空的,所以它可能不需要检查。但是我更喜欢不设置焦点,而不是抛出异常。
rkkpypqq4#
一个稍微干净一点的解决方案: