角度材料 - 不关闭材料零食店

时间:2018-04-03 15:08:07

标签: angular angular-material snackbar

我正在使用Angular和Angular Material版本5.

有没有办法让小吃店保持开放状态?

例如,如果发生错误,请打开小吃栏并在该小吃栏上设置持续时间或超时,以便在5秒后关闭。如果发生了另一个错误,在这5秒内,我怎么能代替关闭这个错误,并打开另一个小吃吧,只是增加这一小时的持续时间几秒钟?

这是stackblitz网址:https://stackblitz.com/edit/angular-j4ww8y

5 个答案:

答案 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)

只需忽略持续时间元素。然后小吃店永远不会关闭