在循环中向 Blazor 组件添加@ref



如何在循环中向 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);
}
}

相关内容

  • 没有找到相关文章

最新更新