[Угловой] Programati c Создание трубы? - PullRequest
0 голосов
/ 05 марта 2020

Я хотел бы создать пользовательскую динамику c angular (7.2.2) Pipe.

Например: пользователь напишет код, подобный приведенному ниже (пользователь может также передать параметр, еще предстоит выяснить идеальный способ отправки параметров.)

var myPage={};
   myPage.registerPipe('myPipe', function myPipeFun(parama1, param2){});

Теперь то, что я хочу сделать, это выше фрагмента кода должен преобразовать в angular pipe.

Например: ниже кода я должен быть в состоянии сгенерировать, можно ли сгенерировать код трубы angular что-то вроде ниже?

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


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

    public constructor(private injector: Injector) {
    }

    transform(value: any, pipeToken: any, pipeArgs: any[]): any {
       myPipeFun(value, ...);
    }
}

1 Ответ

0 голосов
/ 05 марта 2020

Я не думаю, что это возможно в Angular.

Скорее, я бы предложил создать универсальный Pipe

Первый способ

Pipe получить функцию обратного вызова в качестве второго аргумента

export class UniversalPipe implements PipeTransform {

    transform(value: any, callBackFun): string {
        console.log(value);
        return callBackFun();
    }
}

, и вы можете передать динамическую c callback функцию в этот Universal Pipe из вашего компонента.

<p>
  {{'Start editing to see some magic happen' | universalPipe: myFun}}
</p>

Второй способ

Вы можете задать все свои функции в самой трубе и передать функцию вместо callback функции в Universal Pipe и выполнить соответствующую функцию

Вот проект StackBlitz

...