Я создам упрощенный пример моей реальной проблемы, поэтому, допустим, у меня есть компонент, который перечисляет объекты.Угловые шаблоны 2: определение обратного вызова
Он принимает входной сигнал @Input() objects: Object[]
и @Input label: Function
, так что он может вывести наружу разметку для каждого из objects
, имеющих возвращаемого значения label
для каждого из них.
label
должен быть функцией создания строки и в зависимости от объекта, чтобы дочерний компонент был максимально гибким в том, как он представляет каждый объект. Как id + title
или "This is item " + number
или "item " + title + " costs " + cost + "$"
...
label
Практическая может быть e => e.id + ': ' + e.title
где e
(аргумент для label
является соответствующий элемент objects
)
Теперь я хотел бы использовать этот компонент В рамках другого компонента шаблон A без добавления функции label
к классу компонентов A, потому что это значительно усложнит класс компонентов A. Я хотел бы определить функцию label
в шаблоне, например. с
<my-selector [objects]="myObjects" [label]="e => e.id + ': ' + e.title"
Но независимо от того, который нотации я стараюсь, угловатый, кажется, обескуражить это с ошибками, как Bindings cannot contain assignments
и тому подобное ...
Вопрос: ли это можно достичь, и если нет, то есть лучший подход к решению этого?
просто создать функцию и передать эту функцию вместо 'е => e.id +«:»+ е .title' – Maxime
Почему вы передаете функции в качестве входных данных для дочерних компонентов? Как показано выше, 'label' является функцией. Рекомендуется передавать значения в качестве входных данных. Если вы хотите получить доступ к функции в дочернем компоненте, вы всегда можете сделать это, используя экземпляр этого дочернего компонента. – koech
Я хочу сделать это, потому что дочерний компонент должен быть гибким в том, как он отображает объекты. Я соответствующим образом обновил этот вопрос. – Conic