首页 > 解决方案 > Creating a custom pipe in Angular 6 to return a value based on an array

问题描述

I'm creating a simple custom pipe which doesn't seem to work:

This is my code in the pipe which I created by the CLI:- (contain.pipe.ts)

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'contain'
})
export class ContainPipe implements PipeTransform {

  transform(likes: any, term: any): any {

    for (var i = 0; i < likes.length ; i++) {
        if (likes[i] === term) {
            return "liked";
        }else{
            return "";
        }
    }
  }

}

Here's my component simply trying to output liked or not:- (recipe.component.html)

<h2>{{ [1,12,3] | contain:12}}</h2>

It doesn't seem to output any data, even if it's true!

标签: angulartypescriptangular6

解决方案


你很接近,但请注意,当你returnfor循环中获取某些东西时,你只是停止它,而不是返回每个值。在您的情况下,更合适的方法是创建一个空数组,并将必要的值推送给它,如下所示:

transform(likes: any, term: any): any {
    var liked = [];
    for (var i = 0; i < likes.length ; i++) {
        if (likes[i] === term) {
            liked.push(term);
        }
    }
    return liked;
}

这里我只是推送term值,但您可以根据需要修改此块。这是一个堆栈闪电


推荐阅读