2017-04-03 12 views
0

プロジェクトに瞬間を追加しました。moment.fn.toJSONの動作をグローバルに変更するにはどうすればいいですか?角2の外部JavaScriptライブラリを拡張するにはどうすればよいですか?

現在、コンストラクタを使用していますが、これは機能します。しかし、私はすべてのコントローラにこのコードを貼り付けたくありません。だからここ

は、抽出物である:

import * as moment from 'moment'; 

constructor(fb: FormBuilder) { 
    moment.fn.toJSON = function() { return this.format(); } 
} 

誰もがアイデアを持っていますか?

+1

これをmain.tsまたはpolyfills.tsに追加するか、コンポーネントが継承する抽象クラスを作成します。 – n00dl3

+0

私はついにサービスを使いました。それはまだ私がやりたいことではありませんが、それは正常に動作します。あなたのソリューションは素晴らしいようだ、私はそれを見なければならないだろう。ありがとう! –

答えて

1

第三者のライブラリでクラスを拡張し、必要に応じてカスタムメソッドを追加するだけです。例えば

// 1)クラスを拡張:

export class MyFormBuilder extends FormBuilder{ 

    public myCoolMethod(): string{ 
     return "Awesome stuff!" 
    } 
} 

// 2)システム全体のアクセスのための "アプリケーション・モジュール"()

import { MyFormBuilder }  from './Services/MyFormBuilder'; 
@NgModule({ 
    declarations: [AppComponent, AppHeader, AppFooter], 
    imports:  [BrowserModule, ReactiveFormsModule], 
    providers: [MyFormBuilder], 
    bootstrap: [AppComponent], 
}) 
にあなたのクラスをインポートします

// 3)コードで拡張クラスと新しいメソッドをインポート、注入、使用してください:

import { MyFormBuilder }  from './Services/MyFormBuilder'; 
export class AppComponent{ 
    constructor(private fb: MyFormBuilder){} 
    pageTitle : string = this.fb.myCoolMethod(); 
} 
関連する問題