代码之家  ›  专栏  ›  技术社区  ›  user2024080

如何将函数从库导出到应用程序,无法通过提供者发送

  •  0
  • user2024080  · 技术社区  · 5 年前

    我试图将一个函数从angular库导出到其他应用程序,我尝试了如何提供服务,但遇到了错误。正确的方法是什么?

    这是我的职责:(图书馆)

    export function monthDiff(dateFrom, dateTo) {
        dateFrom.setDate(1);
        dateTo.setDate(1);
        return dateTo.getMonth() - dateFrom.getMonth() +
            (12 * (dateTo.getFullYear() - dateFrom.getFullYear()));
    }
    

    如果我像这样导入:

    import {monthDiff}  from '../../service'
    

    并使用提供者进行设置,例如:

    providers: [monthDiff]
    

    出现以下错误:

    Type '(date?: any, dd?: any) => string' is not assignable to type 'Provider'.
      Type '(date?: any, dd?: any) => string' is missing the following properties from type 'any[]': pop, push, concat, join, and 25 more.
    

    如何解决?

    0 回复  |  直到 5 年前
        1
  •  2
  •   Passionate Coder    5 年前

    因此,您还可以执行以下操作:创建一个可以具有许多功能的文件,并将其导出到您想要使用其功能的组件中,如下所示

    utils.ts
    
    
    export default class Utils {
        static doSomething(val: string) { return val; }
        static monthDiff(dateFrom, dateTo) {
            dateFrom.setDate(1);
            dateTo.setDate(1);
          return dateTo.getMonth() - dateFrom.getMonth() +
            (12 * (dateTo.getFullYear() - dateFrom.getFullYear()));
        }
    }
    

    .component.ts

    import { Component } from '@angular/core';
    import Utils from './utils'
    
    
    @Component({
      selector: 'my-app',
      templateUrl: './app.component.html',
      styleUrls: [ './app.component.css' ]
    })
    export class AppComponent  {
      constructor(){
        let today = new Date();
        let form_date=new Date('2019-10-23')
        console.log(Utils.monthDiff(form_date,today))
      }
    }
    

    工作链接

    https://stackblitz.com/edit/angular-zdett3