2016-10-27 3 views
0

Ich versuche, die angular2-Zwischenablage npm Paket zu verlängern. Ich muss Zugang zu seiner ngOnInit() Funktion erhalten und sie überschreiben, um einem spezifischen Anwendungsfall für das Kopieren zu entsprechen.Extend Angular2 Richtlinie

Ich bin neu in angular2 und nicht sicher, wie dies zu tun, so wie ich es bisher versucht habe, ist in den unten stehenden Plunker verknüpft. Ich habe Schwierigkeiten, da das Paket als ein Modul namens ClipboardModule exportiert wird, und ich brauche die Direktive. Hier

ist das Plugin Github und Plunker Referenz:

  1. Github: https://github.com/maxisam/angular2-clipboard
    • Die Datei, die der Export zeigt src/clipboard.module.ts ist
    • Ihre GitHub hat auch eine Verbindung zu einem Plunker Beispiel für die Arbeit
  2. Mein Plummer: https://embed.plnkr.co/sIxmFo/

Antwort

0

So definiert man einen Dienst, keine Richtlinie.

@Injectable() 
export default class CopyDirective extends ClipboardModule { 
     public cm: any; // better way than any? 

    constructor(cm: ClipboardModule) { 
     super(); 
     this.cm = cm; 
    } 
} 

Eine Richtlinie erfordert einen @Directive() decorator anstatt die @Injectable()

Inheritance mit Komponenten, Direktiven und Rohre werden derzeit nicht unterstützt.

ich auch nicht verstehen, warum Sie ein Modul erweitern, wenn Sie eine Richtlinie erweitern möchten. Sie müssen die Anweisungsklasse direkt erweitern.

Siehe https://github.com/angular/angular/issues/11606

kann auch wenn einige Szenarien arbeiten. Normalerweise müssen Sie alle Dekoratoren in der Unterklasse wiederholen.

@Component(), @Directive(), @Input(), @Output(), @ViewChild(ren)(), @ContentChild(ren)(). ...

+0

Hey, danke für die Antwort! Das Problem, das ich mit diesem Paket hatte, ist, dass es als ein Modul exportiert wurde. Gibt es eine Möglichkeit, über das ClipboardModul auf die Richtlinie zuzugreifen? Ich dachte nicht, ich sollte versuchen, etwas wie 'Import {ClipboardDirective} von" node/modules/etc "' – caraclarke

+0

ich sehe zu tun. Ich weiß es nicht. Ich verwende Angular2 nicht aktiv mit TS (nur Dart). –

+3

@caraec Probieren Sie diese 'Import {ClipboardDirective} aus" eckige2-Zwischenablage/src/clipboard.directive ";' – yurzui

Verwandte Themen