Angular 5: Как рендерить детей в родителя?

Всем доброго дня.
Имеем Angular 5

Есть шаблон:
<books>

 <book>
  <title>Книга 1</title>
  <author>Автор книги 1</author>
  <content>Краткое описание 1</content>
 </book>

 <book>
  <title>Книга 2</title>
  <author>Автор книги 2</author>
  <content>Краткое описание 2</content>
 </book>

</books>


Вывожу все компонентами - все гуд.
Понадобилось собрать все заголовки книг и вывести их отдельно от вывода самих книг.

Т.е. шаблон компонента books будет что то типа этого:
<li *ngFor="let book of books">{{book.title}}</li> <ng-content></ng-content>


Список книг получаю так:
@ContentChildren(Book) books: QueryList<Book>;

Но в {{book.title}} вместо названия книги получаю [object Object]

Куда копать? Видимо Angular получает так книгу, но как её рендерить?

Компонент book:
template: '<ng-content></ng-content>'
...
@ContentChild(BookTitle)
title: BookTitle;
  • Вопрос задан
  • 206 просмотров
Пригласить эксперта
Ответы на вопрос 1
rework
@rework
Помог ответ? В благодарность отметь его решением
@ContentChildren(Book) books: QueryList<Book>;

А зачем список книг получать так? Так вы получите список не самих объектов, а список компонентов класса ElementRef. Думаю правильнее получать список книг откуда-то из сервиса (провайдера), и делать это и там где нужны только названия, и там где сами книги.
Ответ написан
Ваш ответ на вопрос

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

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