我正在使用Angular和Angular Material版本5.
有没有办法让小吃店保持开放状态?
例如,如果发生错误,请打开小吃栏并在该小吃栏上设置持续时间或超时,以便在5秒后关闭。如果发生了另一个错误,在这5秒内,我怎么能代替关闭这个错误,并打开另一个小吃吧,只是增加这一小时的持续时间几秒钟?
这是stackblitz网址:https://stackblitz.com/edit/angular-j4ww8y
答案 0 :(得分:5)
这并不能回答原始问题,但是,如果您想要无限期的小吃店: Snackbar.open(“消息”,“动作”,{持续时间:未定义});
答案 1 :(得分:2)
你可以反过来试试:
在超时时设置非常高的持续时间,然后,如果在接下来的5秒内没有发生错误,请使用duration: 5000;
方法关闭它
https://material.angular.io/components/snack-bar/api
您可以在快餐栏中添加自定义组件,而不仅仅是文本。该自定义组件可以负责更新消息
https://material.angular.io/components/snack-bar/examples
顺便说一句,在你的stackblitz中,小吃店永远不会关闭,因为你宣称持续时间为
duration = 5000;
而不是
public abstract class BaseController<TEntity> : Controller
where TEntity : class, new()
{
protected readonly MyContext _context;
public BaseController(MyContext context)
{
_context = context ?? throw new ArgumentNullException(nameof(context));
}
...
[HttpGet("create")]
public IActionResult Create()
{
var model = new TEntity();
return View(model);
}
[HttpPost("create")]
public async Task<IActionResult> Create(TEntity model)
{
if (ModelState.IsValid)
{
_context.Add(model);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(model);
}
...
}
答案 2 :(得分:1)
您可以将持续时间0设置为小吃栏选项
{ duration: 0 }
答案 3 :(得分:0)
一次只能打开一个小吃店。如果在仍显示上一条消息的同时打开新的快餐栏,则较旧的消息将自动关闭。
相反,您可以使用localstorage保存最后一条错误消息,并将这两个错误消息合并到单个小吃栏中,并在关闭第二个小吃条后清除本地存储。
答案 4 :(得分:0)
只需忽略持续时间元素。然后小吃店永远不会关闭