2017-04-03 44 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(); 
}