Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

528
Vistas
ElementReference al elemento creado condicionalmente en Blazor

Estoy tratando de establecer el foco en el control de entrada que se representa condicionalmente. Estoy configurando ElementReference pero su identificación y contexto son nulos.

 <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(); } }

Cuando presiono el botón, muestra este error en la consola:

System.InvalidOperationException: ElementReference no se ha configurado correctamente

Mensaje de error completo:

ingrese la descripción de la imagen aquí

Ejemplo de trabajo con error https://blazorrepl.com/repl/wbueaMPK28hf2NNv09

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Esto parece funcionar y no tiene que ser un componente separado. Lo pegué justo en la página de inicio.

 <button @onclick="ToggleInput">Show input</button> @if (showInput) { <input @ref="inputRef" type="text" /> } @code { private ElementReference inputRef; private bool showInput; protected async override Task OnAfterRenderAsync(bool firstRender) { if (showInput) await inputRef.FocusAsync(); } void ToggleInput() { showInput = !showInput; } }
over 4 years ago · Santiago Trujillo Denunciar

0

Mueva el cuadro de entrada a otro componente. Luego, puede conectarse al ciclo de vida del componente y llamar a .FocusAsync después de que se haya renderizado.

https://blazorrepl.com/repl/cluoEsvU59fl8zYM22

over 4 years ago · Santiago Trujillo Denunciar

0

Tampoco es la solución perfecta, más bien una solución alternativa, pero lo siguiente funcionó para mí:

 <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; StateHasChanged(); await Task.Run(() => { if(inputRef.Context != null) inputRef.FocusAsync(); }); } }

En mis pruebas, el contexto nunca fue nulo, por lo que probablemente no necesitaría la verificación. Pero prefiero que el foco no esté establecido a que se produzca una excepción.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda