【发布时间】:2020-07-20 15:49:20
【问题描述】:
我已经看到了这个问题,但并没有真正得到回答: 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 是做什么用的? 我是否缺少一些明确的功能,还是我做错了?
【问题讨论】:
-
那么回调线程安全吗?这个问题不是自包含的。添加一个按钮来调用UserSaved(),看看是否有效。
-
我会在早上试一试,但鉴于Status Message 等...绑定得很好,我并不乐观...希望我不得不吃字??? ?...我不知道这些组件,但我的感觉是,因为您没有更改 MatSnackBar 上的任何公共参数,所以 Blazor 不知道它需要渲染。您可以简单地使用
<MatSnackBarContent ChildContent=@StatusMessage />来测试它。如果还是不行,试试<MatSnackBarContent data-message=@StatusMessage >@StatusMessage</MatSnackBarContent>。 “data-message”只是编造出来的,但由于基础组件接受属性喷溅,它应该将此视为渲染的原因。我也会在早上尝试一下。但是根据我在这个主题中引用的上一个问题,我在调用小吃店渲染之前更改了消息的值......虽然 Childcontent 可能会这样做,但我会看看。我想我希望为 matblazor 做出贡献的人可能知道。如果这些想法不起作用,也许我会在 GitHub 上提出它......谢谢......我确实找到了解决方案,但我尝试了不同的库“Blazorise”。这显然有不同的工作方式,并且具有“显示”和“隐藏”功能。所以通过使用@ref=snackbar,在我的UserSaved 函数中调用snackbar.Show() 是很简单的。我现在要保留两个库,看看我是怎么走的。再次感谢。