Отключение кнопки от асинхронной функции в Blazor - PullRequest
2 голосов
/ 19 сентября 2019

У меня есть следующая модель EditForm на моей странице:

<EditForm Model="@projectParameters" OnValidSubmit="@SubmitProject">
       <MatButton Raised="true" Type="submit" Disabled="@saveButtonDisabled">@saveButtonName</MatButton>
</EditForm>

Тогда следующие функции:

private async Task SubmitProject()
    {
        DisableSave();

        if (pageType == "Create")
        {
            await CreateProject();
        }
        else if (pageType == "Create")
        {
           await EditProject();
        }
    }

и

void DisableSave()
    {
        saveButtonDisabled = true;
        saveButtonName = "Saving...";
        StateHasChanged();
    }

SubmitProject & DisableSave работают правильновызывается, но saveButtonName & disabled никогда не отображается как завершенный, когда CreateProject работает.Чего мне не хватает?

1 Ответ

2 голосов
/ 19 сентября 2019

Сбросить изменения с await Task.Delay(1);:

private async Task SubmitProject()
{
    await DisableSave();
    ...

Затем

async Task DisableSave()
{
    saveButtonDisabled = true;
    saveButtonName = "Saving...";
    await Task.Delay(1); //flush changes
    StateHasChanged(); // not needed
}
...