angular - 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!
解决方案
你很接近,但请注意,当你return
从for
循环中获取某些东西时,你只是停止它,而不是返回每个值。在您的情况下,更合适的方法是创建一个空数组,并将必要的值推送给它,如下所示:
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
值,但您可以根据需要修改此块。这是一个堆栈闪电。
推荐阅读
- vue.js - 是否可以使用 puppeteer 重现 vue.js 事件?
- vue.js - beforeRouteEnter 函数和 Vuex 问题
- node.js - 如何在 MongoDB find() 中显示建议
- node.js - Docker - 卷解释
- csv - 你如何用逗号组合两个点云?
- flutter - 如何使用 Android Studio 在 Flutter 项目中运行单个 Dart 文件?
- python - 如何拆分数组列表并在python中切换数组的位置
- react-native - 如何在一台手机的不同屏幕上测试反应原生屏幕 UI
- node.js - 我收到 Nodejs 错误 EPERM:3000 的原因是什么?
- django - 通过 Github 将 Django 应用程序部署到 Azure 时禁用 collectstatic 命令