当前位置: 首页 > 知识库问答 >
问题:

array.map不是角管道中的函数

公瑞
2023-03-14

我得到了这个错误错误类型错误:错误类型错误:数组。地图不是一个函数错误,而使用这个角管道,这里是代码。

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

}

共有1个答案

叶华皓
2023-03-14

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

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

为此,对管道进行以下更改:

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';

这是您的参考的工作示例演示代码。

 类似资料:
  • 问题内容: 我能指望每次调用doSomething()时完成的nodeID映射吗? 我以为node.js中的所有回调都是异步的?我确实读过一篇关于通用编程的文章,说回调可以是同步的,但是我不确定node.js吗? 问题答案: JavaScript也是一种功能编程语言。您在这里拥有的是“高阶函数”,该函数将函数作为参数。高阶函数是同步的(但请参见下面的注释)。 资料来源: 功能编程 JavaScri

  • 以下代码未订阅: 但是如果我这样做,它确实订阅: 更新:这个工作太 但当我添加逻辑时,它并没有 我遵循RxJS官方文档:https://rxjs-dev.firebaseapp.com/api/operators/find 我甚至必须在,当我执行时,什么也不会打印出来。我也尝试过使用管道。 对象: 我传递的昵称是将对象与“Devpato”进行比较

  • 我在Jenkins中写了一个Groovy DSL声明性管道脚本。该脚本在运行在Windows Server 2012上的从代理上执行。在这个代理机器上有一个命令行可执行文件,叫做。我使用Groovy的方法执行程序,并输入在构建时传递到管道中的参数。 该脚本很简单,分两个阶段执行以下操作 接受一个参数 从SVN签出一个项目 通过一个函数执行程序 我用的是Jenkins 2.235.3 可执行文件返回

  • 我试图在Beam管道完成后,在Google DataFlow上运行一个函数(或管道)。 目前,我已经构建了一个hack来运行该函数,方法是使用 ... func在哪里: 但是有更好的方法吗?

  • 问题内容: 我在尝试使用数据数组呈现元素时遇到问题。在的下面的代码中,可以正常工作,但列表项未出现。 我究竟做错了什么?请随时指出并非最佳做法的任何内容。 问题答案: GoshaArinich是正确的,您应该返回您的元素。但是,在这种情况下,您应该在浏览器控制台中收到讨厌的红色警告 数组或迭代器中的每个子代都应具有唯一的“键”道具。 因此,您需要在列表中添加“键”: 或使用es6 箭头功能放下并做