【发布时间】:2021-04-06 11:30:55
【问题描述】:
我试图将两种方式绑定到子组件中的选择元素。 Parent 应该能够更改 Child Select 的选定值,并且 Child Select 在更改时应该回调到 parent,以便它可以对新值做出反应。但是我似乎只能将事件传递给孩子,而不会将事件触发给父母。
我的父组件包含一个包含选择的子组件。父组件如下所示:
<SelectInput @bind-Value="Selected">
@ChildContent
</SelectInput>
@code{
[Parameter]
public string Selected { get; set; }
[Parameter]
public RenderFragment ChildContent { get; set; }
[Parameter]
public EventCallback<string> SelectedChanged { get; set; }
private async Task ValueChanged(string val)
{
await SelectedChanged.InvokeAsync(val);
}
}
ValueChanged 和 SelectedChanged 都没有被调用。这是我想解决的问题。
子组件是 SelectInput 组件:
<select value="@Value"
@onchange="OnValueChanged">
@ChildContent
</select>
@code{
[Parameter]
public string Value { get; set; }
[Parameter]
public RenderFragment ChildContent { get; set; }
public async Task OnValueChanged(ChangeEventArgs e)
{
Value = e.Value.ToString();
await ValueChanged.InvokeAsync(Value);
}
}
此子元素正在工作并正在调用 ValueChanged 回调。但是我无法在父级中捕获回调,因为它已经被编译代码调用,因为绑定值(我需要它,因为它也可以在这个父控件之外更改。再次向下绑定正在工作,但是我也需要绑定在这种情况下向上 - 或者至少捕获事件并将其向上传播。 任何帮助将不胜感激:)
【问题讨论】:
标签: blazor