如何在ts而不是HTML中使用管道

时间:2016-09-23 06:04:17

标签: javascript angular pipe

我将文字添加到ts

的html元素中 像这样

this.legend.append('text')
  .attr('x', legendRectSize + legendSpacing)
  .attr('y', legendRectSize - legendSpacing)
  .text(function(d) { return d; });

这将创建类似

的html
<text>Data will come here</text>

我想使用pipe将此数据转换为某种形式 我怎么能用ts代码做到这一点?

当我动态创建这个HTML时,我不能像这样使用管道

<text>{{Data will come here | pipename}} </text>

我正在寻找像

这样的东西
this.legend.append('text')
  .attr('x', legendRectSize + legendSpacing)
  .attr('y', legendRectSize - legendSpacing)
  .text(function(d) { return d; }).applypipe('pipename');

5 个答案:

答案 0 :(得分:14)

首先在组件中导入管道。然后在组件中使用管道。像这样......

<强> pipe.ts

/**
 * filter checkbox list
 */
@Pipe({ name: 'filter', pure: true })
export class FilterPipe{
  transform(items: any[], args: any): any {
    let filter = args.toString();
    if(filter !== undefined && filter.length !== null){
        if(filter.length === 0 || items.length ===0){
            return items;
        }else{
            return filter ? items.filter(item=> item.title.toLocaleLowerCase().indexOf(filter) != -1) : items;
        }
    }
  }
}

component.ts (在打字稿代码中使用)

filterPipe = new FilterPipe();
fiteredArr = filterPipe.transform(chkArray,txtSearch);

xyz.html (在您的html文件中使用)

<ul>
    <li *ngFor="todo for todos | filter:'txtsearch'"> {{todo.name}} </li>
</ul>

答案 1 :(得分:8)

如果Pipename是你的自定义管道,那么如果你想在你的ts文件中使用它,那么你可以使用下面的代码

import {Pipename} from './pipename';

Pipename.prototype.transform(arguments);//this is how u can use your custom pipe

答案 2 :(得分:3)

在组件中导入管道

import { PipeName } from './pipename'

将其添加到商品中

@Component({
    selector: 'pipe-using-component',
    templateUrl: './pipe-using-component.html',
    providers: [
        PipeName
    ],
})

将其注入构造函数中

export class PipeUsingComponent {
  constructor(private pipeName: PipeName)
   }

   var requiredResult = this.pipeName.transform(passvalue);
}

答案 3 :(得分:1)

在你的.ts

import {YourPipe} from '/pipePath';


let value = new YourPipe().transform(param);

答案 4 :(得分:0)

我必须在多个方法上使用它,所以我声明了一个属性,其类型为:PipeName

private pipeName: PipeName;

然后在构造函数中。

constructor() {
    this.pipeName = new PipeName();
}

在任何服务注入的情况下。

constructor(
    private anotherService: AnotherService
) {
    this.pipeName = new PipeName(anotherService);
}

使用管道转换 .ts 中的任意位置

this.pipeName.transform(value, format);

示例

import { Component, OnInit } from '@angular/core';
import { LocalizedDatePipe } from '../../../pipes/localized-date.pipe';
import { TranslateService } from '@ngx-translate/core';

@Component({
    selector: 'edit-appointment',
    templateUrl: './edit-appointment.component.html',
    styleUrls: ['./edit-appointment.component.css']
})
export class EditAppointmentComponent implements OnInit {
    startDate: string;
    localizeDatePipe: LocalizedDatePipe;

    constructor(
        private translateService: TranslateService
    ) {
        this.localizeDatePipe = new LocalizedDatePipe(this.translateService);
    }

    ngOnInit() {
        this.startDate = this.localizeDatePipe.transform('2021-04-08T07:30:00Z', 'd/M/yyyy, h:mm a');
    }
}