Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 为什么是角形2“;过滤器“;被称为;管道;?_Angularjs_Angular - Fatal编程技术网

Angularjs 为什么是角形2“;过滤器“;被称为;管道;?

Angularjs 为什么是角形2“;过滤器“;被称为;管道;?,angularjs,angular,Angularjs,Angular,在中,当我们要格式化表达式的值以显示给用户时,我们使用angular。在中,我们使用相同的 角度1过滤器: HTML: {{问候语|反向} Js: app.filter('reverse',function(){ 返回函数(输入,大写){ 输入=输入| |“”; var out=''; 对于(变量i=0;i

在中,当我们要格式化表达式的值以显示给用户时,我们使用angular。在中,我们使用相同的

角度1过滤器:

HTML:

{{问候语|反向}

Js:

app.filter('reverse',function(){
返回函数(输入,大写){
输入=输入| |“”;
var out='';
对于(变量i=0;i
角度2

HTML:

{{问候语|反向}

打字稿:

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

@Pipe({name: 'reverse'})
export class ReversePipe {
  transform(input:string): string {
    input = input || '';
    let out = '';
    for (var i = 0; i < input.length; i++) {
      out = input.charAt(i) + out;
    }
    return out;
  }
}
从'@angular/core'导入{Pipe,PipeTransform};
@管道({name:'reverse'})
导出类反向实体{
转换(输入:字符串):字符串{
输入=输入| |“”;
放出='';
对于(变量i=0;i

通过查看代码,可以得出结论,两者都做相同的事情。两者都有相同的角色和责任。我想知道的是为什么在Angular 2中它们被重命名为Pipe?

因为Pipe具有更一般的含义,并且不仅仅用于过滤

您可能还想阅读关于Angular 2中缺少
过滤器的原因的段落:

Angular不附带用于过滤或排序列表的管道。 熟悉Angular 1的开发人员将其称为filter和orderBy。 在Angular 2中没有等价物

这不是疏忽。Angular 2不太可能提供此类管道 因为(a)他们表现很差,(b)他们阻止攻击性攻击 缩小。filter和orderBy都需要 引用对象属性。我们早些时候了解到,这种管道必须 几乎每一次变化都会被称为不纯管道 检测周期

过滤,尤其是排序是昂贵的操作。用户 在以下情况下,即使是中等规模的列表,经验也会严重降低: Angular每秒多次调用这些管道方法。过滤器和 orderBy在Angular 1应用程序中经常被滥用,导致 抱怨角度本身很慢。那项指控在法律上是公平的 间接感觉Angular 1通过 首先,提供过滤器和orderBy


所以,您想知道什么是
pipe
?这是因为“|”操作符被称为pipe。该名称来自操作符名称。但是pipe操作符还带有过滤器。。。为什么要否决投票?我错过什么了吗?
app.filter('reverse', function() {
  return function(input, uppercase) {
    input = input || '';
    var out = '';
    for (var i = 0; i < input.length; i++) {
      out = input.charAt(i) + out;
    }
    // conditional based on optional argument
    if (uppercase) {
      out = out.toUpperCase();
    }
    return out;
  };
});
<p> {{ greetings | reverse }}</p>
import { Pipe, PipeTransform } from '@angular/core';

@Pipe({name: 'reverse'})
export class ReversePipe {
  transform(input:string): string {
    input = input || '';
    let out = '';
    for (var i = 0; i < input.length; i++) {
      out = input.charAt(i) + out;
    }
    return out;
  }
}