我正在学习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.
访问它们