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();
}
}
As far as I know, SetparametersAsync should do the trick.
The image is very clear about the blazor component lifecycle: https://knowledgebasehavit.files.wordpress.com/2019/11/blazor-component-lifecycle-diagram.png
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With