如何解决在 MatBlazor
我有一组两个 MatSelectItem 组件,代表一个项目及其环境。我有一个包含这些的简单数据结构:
public static async Task<ProjectsDO> GetProjects(HttpClient client)
{
var projs = new ProjectsDO
{
Items = new List<Item>()
};
for (int i =0; i < 5; i++)
{
var envs = Enumerable.Range(0,5).Select(j => new Environments { Name = $"Proj {i} Env {j}" }).ToList();
projs.Items.Add(new Item { Name = $"Proj {i}",Environments = envs });
}
return projs;
//return await GetAsync<ProjectsDO>(client,"projects");
}
选择项定义为:
<MatSelectItem Items="projItems" ValueChanged="(Item i) => OnProjectChanged(i)">
<ItemTemplate>
<span>@context?.Name</span>
</ItemTemplate>
</MatSelectItem>
<MatSelectItem @bind-Value="selectedEnv" Items="selectedProject?.Environments ?? new List<Environments>()">
<ItemTemplate>
<span>@(context?.Name ?? "Null")</span>
</ItemTemplate>
</MatSelectItem>
填写数据的代码很简单:
private ProjectsDO projects;
private List<Item> projItems= new List<Item>();
private Item selectedProject;
private Environments selectedEnv;
protected override async Task OnInitializedAsync() => await ReadData();
private async Task ReadData()
{
projects = await GetProjects(Http);
projItems = projects.Items;
Console.WriteLine($"In {nameof(ReadData)}");
}
private void OnProjectChanged(Item newProj)
{
selectedEnv = null;
selectedProject = newProj;
}
当我将项目选择更改为一个值时,我会在第二个选择中获得环境列表。当我再次更改它时,我得到了一个例外。我猜它不喜欢我将第二个(envs)所选项目设置为空。
执行此操作的正确方法是什么。似乎是一项简单的任务,但它正在踢我的......
我在 .net 5 正式版上运行,在 VS2019 最新预览版的 Win10 机器上
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。