我正在学习Angular(用TypeScript编写),但偶然发现了此错误:

类'SnackbarService'错误地扩展了基类'MatSnackBar'。
类型具有专用属性“_overlay”的单独声明。


尝试从MatSnackBar扩展@angular/material时。

这是我的代码:

import { MatSnackBar } from '@angular/material';
import { Overlay } from '@angular/cdk/overlay';
import { LiveAnnouncer } from '@angular/cdk/a11y';
...

export class SnackbarService extends MatSnackBar {

  constructor(
    private _overlay: Overlay,
    private _liveAnnouncer: LiveAnnouncer,
    ...
  ) {
    super(_overlay, _liveAnnouncer, ...);
    }
  }
}

我们将不胜感激,感谢您提供任何有关这种情况发生原因的解释。

最佳答案

发生这种情况的原因是,通过将构造函数声明为采用private _overlay参数,您已经创建了自己的_overlay,但是已经在基类MatSnackBar中定义了它。

从声明中删除private部分,并从基类继承它。对其他构造函数参数执行相同的操作。

export class SnackbarService extends MatSnackBar{

  constructor(
    _overlay: Overlay,
    _liveAnnouncer: LiveAnnouncer,
    ...
  ) {
     super(_overlay, _liveAnnouncer, ...);
    }
  }
}

您仍然可以通过this.访问它们

09-25 18:04