Подтвердить что ты не робот

Angular Компонент: нет опции замены шаблона?

Похоже, что в новой AngularJS 1.5 не существует опции "заменить" . Компонентная концепция (как и для директив).

Что бы вы предложили, если бы я хотел бы иметь элемент table <TR> в качестве компонента? Разве это невозможно с точки зрения допустимого HTML?

Реальный пример: компонент mailBox содержит почтовые компоненты внутри. По разметке почтовый ящик-компонент - таблица, а почтовый ящик - tr.

<mail-box>
    <mail ng-repeat="mail in $ctrl.mails" mail="mail"></mail>
<mail-box>

UPD: связанное обсуждение директив - Почему замена устарела в AngularJS?

4b9b3361

Ответ 1

Это невозможно для <-550 > -way, поскольку флаг replace: true был устаревшим

Почему замена устарела в AngularJS?

флаг replace: true имел больше проблем, чем решений, поэтому он был удален. поэтому вы больше не можете создавать директивы таким образом и предоставлять действительную разметку table-tr-td.

Однако есть две причины, почему это не так плохо, как выглядит:

  • вы можете делать все, что хотите, без таблицы, tr, td и т.д. просто используя такие элементы, как div, span и т.д. и некоторые css на нем

  • веб-компоненты (и директивы были первой попыткой имитировать их) не предназначены для представления таких небольших фрагментов разметки. их больше считают полнофункциональным компонентом делать что-то. поэтому, что бы вы ни делали с вашим tr, что вы подумайте, стоит ли создавать вокруг него элемент-директиву, это вероятно, не является.

Возможно, что вы можете сделать, это вместо этого использовать директиву атрибутов:

<tr my-mail-directive></tr>

и ваша директива my-mail делает магию на элементе tr