javascript - 如何使用 Angular 2 扩展外部 JavaScript 库?

标签 javascript angular typescript momentjs

我已将 moment 添加到我的项目中,我想知道如何全局更改 moment.fn.toJSON 的行为。

目前,我正在使用构造函数来执行此操作并且它有效。但我不想将此代码粘贴到我的所有 Controller 中。

这里是摘录:

import * as moment from 'moment';

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

有人有想法吗?

最佳答案

只需扩展第 3 方库中的类并根据需要添加自定义方法即可。

例如:

//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) 在代码中导入、注入(inject)和使用扩展类和新方法:

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

关于javascript - 如何使用 Angular 2 扩展外部 JavaScript 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43188662/

相关文章:

reactjs - React Typescript - React 组件类中的上下文

typescript - 在 typescript 中使用 redux-actions、redux-thunk 和 redux-promise-middleware

javascript - 立即调用的函数表达式 (iife) 如何作为 setTimeout 的参数工作

javascript - 排序功能不在升序和降序之间切换

javascript - AJAX调用liferay门户

angular - 如何获取组件自己的 ElementRef 以检索此组件的 BoundingClientRect?

html - 如何使用angular 5根据屏幕分辨率设置动态div高度

javascript - 读取和设置选择器/img 宽度和高度

Angular 2 - 组件输入问题

reference - 你能创建 Typescript 包吗?像 c# dll