@Cruper
web-падаван

Как передать в компонент вычисляемое выражение?

Есть компонент, которому передается список элементов. Тип и структура элементов неизвестна компоненту. Эти элементы необходимо группировать и сортировать по правилам, известным только родительскому компоненту.

Очевидный способ: в родительском компоненте объявить метод, который будет принимать один из элементов и возвращать, например, строку на основании которой дочерний компонент будет сортировать элементы.

Как хотелось бы: передать компоненту выполняемое typescript выражение с работой над "контекстом". Почти как стрелочная функция, только стрелочные функции не работают в шаблонах angular.

Пример:

<!-- parent component html -->
<my-component [expression]="$context.foo.bar" [items]="Items"></my-component>


// my-component code
@Input() expression: Function;
@Input() items: any[];
...
const results = this.items.map(item => this.expression(item)); // $context = item
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 1
Xuxicheta
@Xuxicheta Куратор тега Angular
инженер
По-идее функции обработчики неплохо бы переносить в сервис.
<!-- parent component html -->
<my-component [funcName]="'myFunc'" [items]="Items"></my-component>

// my-component code
@Input() expressionName: string;
@Input() items: any[];
...
const results = this.items.map(item => this.service[funcName](item)); // $context = item
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы