Как можно отложить вычисление шаблонного выражения в Angular 2?

#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. Независимо от того, как долго вы откладываете привязку, это не изменит, какой класс используется для привязки. Я обновлю свой ответ.