如何在循环中向 Blazor 组件添加@ref
?
@for (int i = 0; i < 10; i++)
{
<MyComponent @ref="???"/> // I want to add this component to the list
}
@code
{
List<MyComponent> components = new List<MyComponent>();
}
我的解决方案如下:
@for (int i = 0; i < 10; i++)
{
<MyComponent @ref="ComponentRef" />
}
@code {
List<MyComponent> ComponentRefs = new List<MyComponent>();
MyComponent ComponentRef {
set { ComponentRefs.Add(value); }
}
}
解释
Blazor 编译器现在的工作方式是,可以在@ref
属性上注入C#
代码。您可以使用它将组件添加到列表中。
@for (int i = 0; i < 10; i++)
{
<MyComponent @ref="components.Add((MyComponent)__value);//" />
}
@code
{
List<MyComponent> components = new List<MyComponent>();
}
由于上述方法不起作用,我找到了一个简单的解决方案。将组件添加到引用资源库的内部列表中。然后,您可以通过索引引用组件。
例:
private List<MyComponent> components = new List<MyComponent>>();
public MyComponent MyComponentRef
{
get
{
return null;
}
set
{
components .Add(value);
}
}