#javascript #angular #transclusion
#javascript #angular #преобразование
Вопрос:
Не уверен, правильно ли я сформулировал этот вопрос. То, что я пытаюсь сделать, это записать шаблонное выражение в родительском компоненте и отложить его вычисление до тех пор, пока я не смогу передать его в дочерний компонент.
например,
Родительский cmpt
...
<search-results>
<div>{{ item.title }}</div>
<div>{{ item.id }} </div>
</search-results>
...
Дочерний cmpt
...
<li *ngFor="let item of data">
<ng-content select="search-results"></ng-content>
...
Я не хочу {{item.title}}
, {{item.id}}
чтобы выражения and вычислялись до тех <search-result>
пор, пока элемент не будет переведен в дочерний элемент. Как бы я это сделал?
Обновить
Есть несколько хитрых обходных путей в https://github.com/angular/angular/issues/8563 , но пока нет «правильного» способа реализации этого решения.
Комментарии:
1. Какова цель? Вы не ожидаете
item
, что будете ссылаться наChildCmpt
этот путь?
Ответ №1:
<search-results #parent>
<div>{{ parent.item.title }}</div>
<div>{{ parent.item.id }} </div>
</search-results>
Комментарии:
1. Хорошая идея, не думал делать что-то подобное. Похоже, это не работает.
2. Кажется, что проецируемый контент никогда не отображается. Я попытался установить значение
isTranscluded
prop в true ранее в жизненном цикле, просто чтобы попробовать, но безрезультатно.3. В любом случае, какой смысл откладывать рендеринг? Пока для меня это не имеет смысла.
4.
<ng-content>
В моем коде живет внутриngFor
директивы. Обновил исходное сообщение, чтобы сделать это более понятным.5. Независимо от того, как долго вы откладываете привязку, это не изменит, какой класс используется для привязки. Я обновлю свой ответ.