I’ve referenced my code from Here and have a follow up
Attempting to access changed infomation in MainLayout based on changes in the @body
Mainlayout with NavPathComponent
<div class="page">
<div class="sidebar">
<NavMenu />
</div>
<main>
<div class="top-row px-4">
<NavPathComponent />
<a href="https://learn.microsoft.com/aspnet/core/" target="_blank">About</a>
</div>
<article class="content px-4">
@Body
</article>
<footer style="background-color:#3a0647; position: fixed;bottom: 0; width: -webkit-fill-available; padding:5px;">
<div class="logo-footer">
<a href="https://bhinc.com/" target="_blank">
<img src="Images/bh-logo-light.svg" />
</a>
</div>
</footer>
</main>
</div>
My component.razor with what I want to update based on @vody changes
@inject NavigablePathService NavigablePath
@implements IDisposable
<h3>NavPathComponent</h3>
<div class="col top-row px-4">
<p>
@if (NavigablePath.NavigablePath != null)
{
@foreach (string folder in NavigablePath.NavigablePath.Split("\"))
{
<label style="cursor: pointer;color:blue;">@(folder)</label>
<label> > </label>
}
}
</p>
</div>
@code {
public Func<Task> NavPathChange { get; set; }
protected override void OnInitialized()
{
NavPathChange = async () =>
{
await InvokeAsync(StateHasChanged);
};
NavigablePath.NavigablePathSelector += NavPathChange;
}
public void Dispose()
{
NavigablePath.NavigablePathSelector -= NavPathChange;
}
}
My service.cs
public class NavigablePathService
{
public string NavigablePath { get; set; }
public Func<Task> NavigablePathSelector { get; set; }
public async Task ChangePath(string newPath)
{
NavigablePath = newPath;
await NavigablePathSelector.Invoke();
}
}
The issue I run into is that Func is null when I call it from my OnIntialize in my @page
protected override void OnInitialized()
{
navigablePathService.ChangePath("test\banana");
}
First is this the right practive I attempted Casacading Value nesting a this Value=”this” in MainLayout that didn’t make much sense to me.
Would adding a constructor to my service and injecting it with a Func be a thing?
public NavigablePathService(Func<Task> navigablePathSelector)
{
NavigablePathSelector = navigablePathSelector;
}
Quinn Nash is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.