MatSnackBar内容(Blazor)未更新

时间:2020-07-20 15:49:20

标签: c# blazor matblazor

我已经看到了这个问题,但是并没有真正得到回答: MatSnackbar not updating MatSnackBarContent 我遇到类似的问题,我想看看是否有人知道解决方案。

我有一个简单的例子:

     <div>Snackbar Status Message =  @StatusMessage</div>  <<< This shows the actual value
    
    <MatSnackbar @bind-IsOpen="@statusBarIsOpen">
        <MatSnackbarContent   >@StatusMessage</MatSnackbarContent>   <<< This should show the same
    </MatSnackbar>

我正在通过用户窗体上的自定义事件回调来更新@StatusMessage,并希望显示更新是否成功。 (我会想到一个很常见的用例?)

    // This is the callback handler for the 'OnUserSaved' callback
    protected void UserSaved(string statusmessage)
    {
        StatusMessage = statusmessage;     <<< Update the status message
        statusBarIsOpen = true;            <<< Open the snackBar / status bar
        this.StateHasChanged();            <<< fire the changed event
        isOpened = false;                  <<< this closes the form
    }

第一次,正确显示StatusMessage。之后,它将仅固定在第一条消息上。虽然上面正确显示了状态。我的意思是,我可以只使用上面的行并将其清除,等等。但是,MatSnackBar的作用是什么? 我缺少某些清晰的功能,还是我做错了?

1 个答案:

答案 0 :(得分:1)

github上的solution通过以下解决方法得以解决:

@if(@statusBarIsOpen)
{
    <MatSnackbar @bind-IsOpen="@statusBarIsOpen">
        <MatSnackbarContent>@StatusMessage</MatSnackbarContent>
    </MatSnackbar>
}