Search code examples
blazorblazor-webassembly

Cannot convert from method group to EventCallback - parent/child component


I have a component defined as such

@using BlazorState
@using Common.Extensions
@using TPL.Client.Core.Utilities

@inject Utilities Utilities

@inherits BlazorStateComponent

<div class="component">
    <MudButtonGroup Color="Color.Default" Variant="Variant.Text" Size="IconSize">
        @foreach (Common.Constants.Type.Types item in types)
        {
            <MudTooltip Text="@(item.GetAttribute<Common.Constants.Type.DescriptorAttribute>().QuestionName)">
                <MudToggleIconButton Icon="@(Utilities.GetTypeIcon(item))" ToggledIcon="@(Utilities.GetTypeIcon(item))" Color="@Color.Default" ToggledColor="@Color.Secondary" ToggledChanged="@(async (bool x) => SelectedTypeChangedCallback.InvokeAsync((x, item)))" />
            </MudTooltip>
        }
    </MudButtonGroup>
</div>


@code {
    Common.Constants.Type.Types[] types;

    [Parameter] public Common.Constants.RecordType.Types RecordType { get; set; }
    [Parameter] public EventCallback SelectedTypeChangedCallback { get; set; }
    [Parameter] public Size IconSize { get; set; } = Size.Small;

    protected override async Task OnParametersSetAsync()
    {
        types = "some logic";  
    }
}

I then use this component as such

<TypeToggler RecordType="Common.Constants.RecordType.Types.BASE_QUESTION" SelectedTypeChangedCallback="@SelectedTypeChanged"/>

In the same component as the line above I have

async Task SelectedTypeChanged(bool chck, Common.Constants.Type.Types type)
{
    if (chck) selectedTypes |= type; else selectedTypes &= ~type;

    await LoadQuestions(true);
}

I get Cannot convert from method group to EventCallback on SelectedTypeChangedCallback="@SelectedTypeChanged"

What am I doing wrong?


Solution

  • Please define EventCallback like this

    EventCallback<(int, Common.Constants.Type.Types)>

    And

    SelectedTypeChangedCallback=@(e=> SelectedTypeChanged(e.Item1, e.Item2))