错误类型错误:array.map 不是角度管道中的函数

Posted

技术标签:

【中文标题】错误类型错误:array.map 不是角度管道中的函数【英文标题】:ERROR TypeError: array.map is not a function in angular pipe 【发布时间】:2020-04-14 01:18:14 【问题描述】:

我收到此错误 ERROR TypeError: ERROR TypeError: array.map is not a function error while using this angular pipe and here is code.

export class CharacterWithCommasPipe implements PipeTransform 
  transform(array) 
    return array.map(item => item.name).join(', ');
  

【问题讨论】:

请同时发布使用此管道的视图代码,您很可能将一些不是数组的东西放入管道中 对象,,在 javascript 中没有方法 .map()。所以请确保它。 【参考方案1】:

您可能没有在数组上调用此管道。

理想情况下,如果管道的input 不是预期的格式,您应该确保抛出错误。这样它就会以更优雅的方式实现

为了做到这一点,对您的管道进行以下更改:

import  Pipe, PipeTransform  from "@angular/core";

@Pipe(
  name: "joiner"
)
export class JoinerPipe implements PipeTransform 
  transform(arrayToJoin: Array<any>, joinBy?: string) 
    if (arrayToJoin && arrayToJoin.map) 
      return arrayToJoin.map(item => item.name).join(joinBy || ", ");
    
    throw new Error('joiner pipe only expects an Array as a first argument');
  

然后你可以像这样使用它:

<p> With Joiner Value -  items | joiner: ' and ' </p>
<p> Without Joiner Value -  items | joiner </p>

<p> With wrong Input that throws error on the console -  someOtherItems | joiner: ', ' </p>

在看起来像这样的数据上:

items = [
   name: 'A' ,
   name: 'B' ,
   name: 'C' ,
   name: 'D' 
];

someOtherItems = 'ABCD';

这里有一个Working Sample Demo Code 供您参考。

【讨论】:

以上是关于错误类型错误:array.map 不是角度管道中的函数的主要内容,如果未能解决你的问题,请参考以下文章

错误类型错误:this._document.createElement 不是函数角度

typescript array.map 丢失返回类型

订阅角度中的下一个参数类型错误

IE11 中的 Array.map() 出错

Angular 6:错误类型错误:el.toLowerCase 不是函数

Ag-Grid 断言错误:传入的类型不是 ComponentType,它没有“ɵcmp”属性