Задний план:
Динамика Angular Material Design компонент mat-side-nav такова, что требует следующей структуры:
<mat-sidenav-container>
<mat-sidenav>
</mat-sidenav>
<mat-sidenav-content>
</mat-sidenav-content>
</mat-sidenav-container>
<mat-sidenav> и <mat-sidenav-content> должны быть прямыми потомками родительского компонента <mat-sidenav-container>. Поэтому, если я хочу создать повторно используемую боковую навигацию в приложении с определенными элементами списка, мне придется сделать следующее:
<mat-sidenav-container>
<mat-sidenav>
<app-sidenav></app-sidenav><!--I've just been added-->
</mat-sidenav>
<mat-sidenav-content>
</mat-sidenav-content>
</mat-sidenav-container>
Попытка решения:
Поэтому я пытаюсь расширить компонент <mat-sidenav> в моем компоненте app-sidenav, чтобы его можно было легко повторно использовать во всем приложении, например:
export class SideNavComponent extends MatSidenav implements AfterContentInit {
//..
constructor() {
super();
}
Чтобы я мог просто сделать:
<mat-sidenav-container>
<app-sidenav> <!--I'm now here instead of <mat-sidenav> -->
</app-sidenav>
<mat-sidenav-content>
</mat-sidenav-content>
</mat-sidenav-container>
Проблема:
Компилятор машинописного текста будет жаловаться на error TS2554: Expected 6 arguments, but got 0. при попытке расширить MatSidenav.
Вопрос:
Спасибо, и любые предложения более чем приветствуются.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам понадобятся эти 6 параметров. Вы можете проверить их в исходном коде Angular Material2. Что до того, почему, это основное правило наследия. Когда вы вызываете super, вы в основном вызываете конструктор родительского класса (который в этом случае требует 6 параметров)
private _elementRef: ElementRef,
private _focusTrapFactory: FocusTrapFactory,
private _focusMonitor: FocusMonitor,
private _platform: Platform,
private _ngZone: NgZone,
@Optional() @Inject(DOCUMENT) private _doc: Document
Вы можете опустить конструктор в дочернем классе, поэтому вам не нужно заботиться о параметрах (убедитесь, что это работает как в режиме JIT, так и в режиме AOT).