2016-10-27 90 views
0

我想擴展angular2-clipboard npm包。我需要訪問其ngOnInit()函數並覆蓋它以適應複製的特定用例。Extend Angular2指令

我是angular2的新手,不確定如何做到這一點,我一直在嘗試它的方式在下面的plunker中鏈接。我有困難,因爲包被導出爲一個名爲ClipboardModule的模塊,我需要該指令。

下面是引用插件github上和plunker:

  1. Github上:https://github.com/maxisam/angular2-clipboard
    • ,顯示出口爲src/clipboard.module.ts文件
    • 他們的github上也有鏈接到一個蹲下的例子它的工作
  2. 我的運動員:https://embed.plnkr.co/sIxmFo/

回答

0

這是如何定義服務而不是指令。

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

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

一個指令需要@Directive()裝飾,而不是與組件,指令的@Injectable()

繼承和管道目前不支持。

我也不明白你爲什麼擴展一個模塊,當你想擴展一個指令。您需要直接擴展指令類。

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

看到一些場景雖然可以正常工作。 通常您需要重複子類中的所有裝飾器。

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

+0

嘿,謝謝你的回答!我使用這個軟件包的問題是它作爲一個模塊導出。有沒有辦法通過ClipboardModule訪問指令?我沒有想到我應該嘗試從「node/modules/etc」' – caraclarke

+0

'中導入{ClipboardDirective}。我不知道這一點。我沒有積極使用Angular2和TS(只有Dart)。 –

+3

@caraec試試這個'從'angular2-clipboard/src/clipboard.directive'導入{ClipboardDirective};' – yurzui