Angular4 Komponenten, Vererbung, abstrakte Klasse

Möchte ich definieren als Basisklasse für meine Komponenten zu teilen einige Merkmale. Also habe ich begonnen mit :

export abstract class BaseComponent {
    protected getName(): string;
}

@Component(...)
export class MyComponent extends BaseComponent {
    protected getName(): string {
        return "MyComponent";
    }
}

Aber nach brauchte ich, um einige Anmerkungen zu BaseComponent wie @HostListener('window:keydown', ['$event']). So musste ich hinzufügen @Component zu BaseComponent zu aktivieren eckig Anmerkungen. Alles war gut... Bis ich versucht zu kompilieren, in der Produktion Modus mit

ng build --prod

:

Nicht bestimmen kann, das Modul für die Klasse BaseComponent

So, ich habe BaseComponent zu @NgModule, aber ich hatte :

Keine Vorlage angegeben, die für die Komponente BaseComponent

So, ich habe

@Component({template: ''})

Aber ich hatte :

Argument vom Typ 'typeof BaseComponent' nicht zuordenbar parameter von Typ 'Typ'. Nicht zuordnen einer abstrakten Konstruktor-Typ eine nicht-abstrakte Konstruktor geben.

Also musste ich entfernen die "abstract" keyword zu kompilieren in der Produktion Modus mein Projekt.

Haben Sie eine Lösung? , Die ich nicht mag schlechte Vorstellung!

Haben Sie versuchen, nur um die HostListener, ohne etwas anderes zu tun ?

InformationsquelleAutor Chklang | 2017-12-19

Schreibe einen Kommentar