Tengo un servicio de alcance:
services.AddScoped<UserSettingsService>();
Quiero llamar al método asíncrono en el servicio (cargar datos de la base de datos) antes de que se inicialicen los componentes secundarios (antes ComponentBase.OnInitialized();
)
¿Cuál es el mejor lugar para llamar a UserSettingsService.LoadAsync();
?
Intenté hacerlo en el componente de la aplicación en OnInitializedAsync(), pero parece demasiado tarde, porque mis componentes secundarios se inicializaron antes que UserSettingsService:
aplicación.razor.cs:
public partial class App { [Inject] UserSettingsService UserSettingsService {get; set;} [Inject] AuthenticationStateService AuthenticationStateService {get; set;} public override async Task OnInitializedAsync() { string userName = (await AuthenticationStateService.GetAuthenticationState()).User.Identity.Name; await UserSettingsService.LoadAsync(userName ); await base.OnInitializedAsync(); } }
Hasta donde yo sé, SetparametersAsync
debería funcionar.
La imagen es muy clara sobre el ciclo de vida del componente blazor: https://knowledgebasehavit.files.wordpress.com/2019/11/blazor-component-lifecycle-diagram.png