Mik*_* Me 30 javascript typescript angular
我正在学习Angular,我偶然发现了这个错误:
类'SnackbarService'错误地扩展了基类'MatSnackBar'.类型具有私有属性'_overlay'的单独声明.
当试图从@ angular/material扩展MatSnackBar时.
这是我的代码:
import { Injectable, Injector } from '@angular/core';
import { MatSnackBar } from '@angular/material';
import { Overlay } from '@angular/cdk/overlay';
import { LiveAnnouncer } from '@angular/cdk/a11y';
import { BreakpointObserver } from '@angular/cdk/layout';
@Injectable()
export class SnackbarService extends MatSnackBar{
constructor(
private _overlay: Overlay,
private _liveAnnouncer: LiveAnnouncer,
private _injector: Injector,
private _breakPointObserver: BreakpointObserver,
private _matSnackBar: MatSnackBar) {
super(_overlay, _liveAnnouncer, _injector, _breakPointObserver, _matSnackBar);
}
}
Run Code Online (Sandbox Code Playgroud)
任何关于为什么会发生这种情况的解释的任何帮助都将非常感激.
Sur*_*yan 74
因为您已经创建了自己的_overlay,已经在基类中定义了MatSnackBar.private从声明中删除该部分并从基类继承它.为其他人做同样的事情.
@Injectable()
export class SnackbarService extends MatSnackBar{
constructor(
_overlay: Overlay,
_liveAnnouncer: LiveAnnouncer,
_injector: Injector,
_breakPointObserver: BreakpointObserver,
_matSnackBar: MatSnackBar) {
super(_overlay, _liveAnnouncer, _injector, _breakPointObserver, _matSnackBar);
}
}
Run Code Online (Sandbox Code Playgroud)
您仍然可以通过它访问它们 this.
Anu*_*hra 11
在依赖项版本不匹配的情况下也会发生这种情况。[从打字稿的角度来看]
例如,如果您的应用A使用包B 的1.0 版和包C 的1.0 版。但是包 C 使用包B的不同版本,比如 2.0。
现在您在整个构建过程中有两个具有相同名称的不同类。要解决它,您必须升级包 C 或升级包 B,以便在应用程序中具有相同的版本。
| 归档时间: |
|
| 查看次数: |
19815 次 |
| 最近记录: |