То, что вы пытаетесь сделать, называется Content Projection
в Angular. Вы можете просто использовать ng-content
для проецирования чего-либо.
@Component({
selector: 'app-wrapper',
template: `
<div class="wrapper">
<ng-content></ng-content>
</div>
`
})
export class WrapperComponent {}
И вы можете использовать его любым удобным вам способом
<app-wrapper>
<app-edit-address></app-edit-address>
</app-wrapper>
<app-wrapper>
<div>
<label>Edit Email</label>
<input />
</div>
</app-wrapper>
<app-wrapper>
<h2>
Unauthorized
</h2>
</app-wrapper>
Все, что вы передадите между открывающими и закрывающими тегами, будет проецироваться в где ng-content
есть.