问题描述
我有一组两个 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 (将#修改为@)