安装了npm软件包,但在浏览器中出现“不是函数”错误

时间:2019-11-01 11:19:05

标签: angular typescript

我正在使用 Ionic 4 ,并尝试使用以下lib:https://date-fns.org来获取日期字符串,例如2019-11-01 07:23:22,以易于理解的方式显示。

所以我用以下命令安装了lib:

npm install date-fns --save

然后在mypage.ts文件中

import { format, formatDistance, parseISO } from 'date-fns';

然后在mypage.html文件中

<div class="date">{{ formatDistance(parseISO(h.created_at)) }}</div>

所以我在浏览器控制台中遇到此错误:

ERROR TypeError: _co.parseISO is not a function

它说该功能不存在,但是在文档中:https://date-fns.org/v2.6.0/docs/parseISO

我做错什么了吗?

2 个答案:

答案 0 :(得分:0)

在TS文件中:

import { format, formatDistance, parseISO } from 'date-fns';

constructor(public formatDistance: formatDistance) {
}

这是HTML

<div class="date">{{ formatDistance(parseISO(h.created_at)) }}</div>

答案 1 :(得分:0)

只能从视图中调用components类的实例成员。

https://stackoverflow.com/a/41857120/7562674

在Ts文件中:-

import { Component } from '@angular/core';
import { format, formatDistance, parseISO } from 'date-fns';

export class AppComponent implements OnInit {

formatDistance=formatDistance;
parseISO=parseISO;  
date=  "2018-10-01";
d=new Date(2015, 0, 1)
constructor(){
  console.log(formatDistance(parseISO("2018-10-01"), new Date(2015, 0, 
  1)))
  }

在模板中:-

  <p>{{formatDistance(parseISO(date),d)}}</p>

我检查了这是正常的。

声明为变量并分配它,而不是注入构造函数参数。由于它是一个函数而不是一个类,因此在构造函数中使用时为什么不显示错误而不显示类型。