替换 Angular 8 中已弃用的 MediaQueryList.addListener() 事件

Cha*_*nya 14 javascript typescript angular

正如mozilla developers docs所说的MediaQueryListaddListener 已被弃用。我在我的Angular 8. 虽然它正在工作,但它在VS Code.

它的替代品是什么?

mut*_*til 28

引用关于MediaQueryList的 MDN 文档:

MediaQueryList.addListener()向 MediaQueryListener 添加一个侦听器,该侦听器将运行自定义回调函数以响应媒体查询状态的变化。这基本上是 EventTarget.addEventListener() 的别名,用于向后兼容。

addEventListener 需要一个事件类型作为第一个参数,所以它变成了这样:

// deprecated: MediaQueryList.addListener(listener);
MediaQueryList.addEventListener('change', listener);

Run Code Online (Sandbox Code Playgroud)

这同样适用于removeListener()

// deprecated: MediaQueryList.removeListener(listener);
MediaQueryList.removeEventListener('change', listener);

Run Code Online (Sandbox Code Playgroud)

  • 请注意 MDN 上的兼容性表。一年后,Safari 仍然不支持新格式,我经历了惨痛的教训:( (5认同)
  • 对于那些需要它的人来说,这是[兼容性表的链接](https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList#browser_compatibility),查找“MediaQueryList继承EventTarget”行。现在 Safari 14 及更高版本都支持它。 (2认同)