I want to create a reusable table component which uses primeNg to render ui. I created a table.component.html
and .ts
for that. Now i want to render content for the table which will be table headers (th
) and table body (body
).
To do that, i am writing th
and tbody
implementation as a content of table and trying to render it in table.component.html
using <ng-content></ng-content>
. But the table is not displaying.
I tried adding the th
and tbody
directly in table.component.html
and it displays the table. shouldn't ng-content
do the same thing because the content has the same html?
Here is the link to snippet with example. Check table.component.html
under shared dir. And app.component.html
for initial start. comment the ng-content
line and uncomment remaining lines in table.component.html
and you should see the table.
https://stackblitz.com/edit/angular-playground-kwudxn?file=app%2Fshared%2Ftable%2Ftable.component.html
Problem with your application is that
ng-template
doesn't render anything song-content
doesn't render anything either. I don't see currently any added value in yourTableComponent
as it currently only resends the templates, but that's maybe because it is just a demo and it will have some added value in your case.You need to change your
TableComponent
to pick up thePrimeTemplate
s from the content and resend them top-table
:And in your template:
Here is complete forked stackblitz demo.
Of course there are other ways to implement this, e.g. your
TableComponent
could have just 2@Input
s and just resend them top-table
instead of usingPrimeTemplate
s.