users-component.html
<table class="table table-hover">
<thead class="text table-head-font">
<tr>
<th>ID</th>
<th>First Name</th>
<th>Last Name</th>
</tr>
</thead>
<tbody>
<tr (dblclick)="selectUser()">
<td>{{id}}</td>
<td>{{firstName}}</td>
<td>{{lastName}}</td>
</tr>
</tbody>
</table>
app.component.html
This will render thead for every record inside table, which I want to avoid.
I tried to refactor this to put table tr items inside users-component.html and table header to leave outside in app.component like app.component.html
<table class="table table-hover">
<thead class="text table-head-font">
<tr>
<th>ID</th>
<th>First Name</th>
<th>Last Name</th>
</tr>
</thead>
<tbody>
<users *ngFor="let user of users" (openUser)="getUser($event)" [id]="user.Id" [firstName]="this.firstName" [lastName]="this.lastName"></users>
</tbody>
</table>
users-component.html
<tr (dblclick)="selectUser()">
<td>{{id}}</td>
<td>{{firstName}}</td>
<td>{{lastName}}</td>
</tr>
But this renders everything under first td, rest of td and tr are empty.
Update
users-component.ts
@Component({
selector: 'users',
templateUrl: './users-component.html'
})