Initialize Blazor scoped service using async method before components are initialized

Viewed 536

I have a scoped service:

services.AddScoped<UserSettingsService>();

I want to call async method on the service (load data from DB) before child components are initialized (before ComponentBase.OnInitialized();)

Where is the best place to call UserSettingsService.LoadAsync();?

I have tried to do it in App component in OnInitializedAsync(), but it seems too late, because my childcomponents has been initialized before the UserSettingsService:

app.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();
  }
}
1 Answers
Related