检查数组中的数据是字符串还是日期并进行相应转换

check if the data in array is string or date and convert accordingly

我想查看p-table中循环过来的数据是字符串类型还是日期类型

我有一个名为 newValue 的键 其值可以是 newValue: "Percentage"newValue: "2021-03-25T15:55:42.136Z"

如果它的日期我想将数据显示为 "3/25/21, 9:25 PM" 否则正常字符串 "Percentage"

 <td style="width: 10%;">
        {{rowData?.histories.newValue ? getDateorStringValue(rowData?.histories.newValue) : 'N/A'}}
      </td>
    getDateorStringValue(...) 

我正在使用的功能是如何实现的吗?

您可以编写一个快速管道来进行比较。

日期-或-string.pipe.ts

import { Inject, LOCALE_ID, Pipe, PipeTransform } from "@angular/core";
import { DatePipe } from "@angular/common";

export const isDate = (date: string) => {
  return !!Date.parse(date);
};

@Pipe({
  name: "dateOrString"
})
export class DateOrStringPipe extends DatePipe implements PipeTransform {
  constructor(@Inject(LOCALE_ID) locale: string) {
    super(locale);
  }

  transform(
    value: any,
    format?: string,
    timezone?: string,
    locale?: string
  ): any {
    return isDate(value)
      ? super.transform(value, format, timezone, locale)
      : value;
  }
}

用法

<td style="width: 10%;">
  {{ rowData.histories.newValue | dateOrString:'M/dd/yy, h:mm a'}}
</td>

请注意,使用 Date.parse() 的条件可能仅在与字符串进行比较时才有效。您可以找到 here.

更好的比较方法

工作示例:Stackblitz