我已经在项目中添加了时间,我想知道如何在全局范围内更改moment.fn.toJSON的行为。

目前,我正在使用构造函数来执行此操作,并且它可以正常工作。但是我不想将此代码粘贴到所有控制器中。

所以这里是摘录:

import * as moment from 'moment';

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


有人有主意吗?

最佳答案

只需在3rd party库中扩展该类并根据需要添加自定义方法即可。

例如:

// 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();
}

09-25 16:55