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-templatedoesn't render anything song-contentdoesn't render anything either. I don't see currently any added value in yourTableComponentas 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
TableComponentto pick up thePrimeTemplates 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
TableComponentcould have just 2@Inputs and just resend them top-tableinstead of usingPrimeTemplates.