【问题标题】:Can't find mistake in Pipe在管道中找不到错误
【发布时间】:2018-01-06 07:59:59
【问题描述】:

我在 Typescript 中遇到了以下管道问题。我想用一个元素过滤一个数组,该元素是另一个过滤器操作与另一个数组的结果。我试图写一个管道来解决这个问题,但它不起作用,我不知道为什么。

这是管道的代码:

@Pipe({
name: 'FilterABC',
pure: false}) export class FilterABC implements PipeTransform {

transform(impacts: any[], secObjec: string, secObjects: any[]): any {

    let x: string = (secObjects.filter((item) => item.secObj === secObjec))[0].toString();

    return impacts.filter((item) => item.securtyObjective.toString() === x);
}}

这里是 HTML 代码:

<select #imValue class="form-control">
            <option *ngFor="let impact of impacts | FilterABC:secObj.value:secObjs;">{{impact.securtyObjective.id}}</option>
        </select>

非常感谢!

【问题讨论】:

  • 什么不起作用?你有错误吗?
  • 选择字段为空。
  • transform 中有 3 个参数,但在 html 中只使用了 2 个。建议在 transform 中设置断点或调用调试器并遍历它
  • 当你使用管道过滤时,应该过滤的Array不是html中的Argument

标签: html angular typescript


【解决方案1】:

我想你忘了从数组过滤器方法中的箭头函数返回结果。

试试这个更新的管道定义 -

@Pipe({
    name: 'FilterABC',
    pure: false
}) 
export class FilterABC implements PipeTransform {

    transform(impacts: any[], secObjec: string, secObjects: any[]): any {

        let x: string = (secObjects.filter((item) => { return item.secObj === secObjec; }))[0].toString();

        return impacts.filter((item) => { return item.securtyObjective.toString() === x; });
    }
}

我希望这会有所帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 2018-09-22
    • 2020-09-07
    • 1970-01-01
    • 2021-09-26
    相关资源
    最近更新 更多