Angular mobileQuery.addEventListener 不是 safari 中的函数,如何修复?

Posted

技术标签:

【中文标题】Angular mobileQuery.addEventListener 不是 safari 中的函数,如何修复?【英文标题】:Angular mobileQuery.addEventListener is not a function in safari, how to fix? 【发布时间】:2021-03-30 10:28:48 【问题描述】:

我正在使用有角度的材质 sidenav,它会在设备的最大宽度上出现一些断点。

这里是例子

Angular material documentation example The same example in stackblitz

看起来像这样:

public mobileQuery: MediaQueryList;
private _mobileQueryListener: () => void;

constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher)
    this.mobileQuery = media.matchMedia('(max-width: 992px)');
    this._mobileQueryListener = () => changeDetectorRef.detectChanges();
    this.mobileQuery.addEventListener('change', this._mobileQueryListener);


ngOnDestroy(): void 
    this.mobileQuery.removeEventListener('change', this._mobileQueryListener);

在 safari 我得到这个错误:

this.mobileQuery.addEventListener 不是函数

this.mobileQuery.removeEventListener 也是如此。

如何解决?

【问题讨论】:

【参考方案1】:

试试这个

this.mobileQuery.addListener(this._mobileQueryListener);

this.mobileQuery.removeListener(this._mobileQueryListener);

【讨论】:

以上是关于Angular mobileQuery.addEventListener 不是 safari 中的函数,如何修复?的主要内容,如果未能解决你的问题,请参考以下文章

找不到模块'angular2/angular2'

Angular 6 和业力'无法加载“@angular-devkit/build-angular”,它未注册'

angular.js 的angular.copy angular.extend angular.merge

如何使用 @angular/upgrade 在 Angular 1 应用程序中使用 Angular 2 组件

Angular 1 和 Angular 2 集成:无缝升级的方法

Angular 6 中的 AuthHttp(从 Angular2 迁移到 Angular6)