Использовать один и тот же селектор в 2 компонентах, но разный синтаксис шаблона?

У меня есть 2 компонента (DetailPage, ListPage) с шаблоном ниже:

<my-detailpage>
 <my-header>{{ text }} </my-header>
 <my-content>{{ content }} </my-content>
</my-detaipage>

<my-listpage>
 <my-header>{{ text }} </my-header>
 <my-content>{{ content }} </my-content>
</my-listpage>

Я хочу использовать тот же селектор для заголовка и содержимого, но другой шаблон на основе страницы сведений или списка.

Я пытался сделать это с помощью провайдеров, но не уверен, что это правильный путь.

Любая помощь также хорошо для меня, большое спасибо.

2 ответа

Решение

Спасибо @jayanthCoder, я понял вашу точку зрения и обновил свой путь для этой проблемы.

мой-header.component.ts

@Component({
    selector: 'my-header',
    template: `<ng-content></ng-content>` ,
    encapsulation: ViewEncapsulation.None
})

мой-detailpage.component.ts

<my-detailpage>
    <my-header>Content for detail page : {{ text }} </my-header>
</my-detaipage>

мой-listpage.component.ts

<my-listpage>
    <my-header>Content for list page : {{ text }} </my-header>
</my-listpage>

С этим решением, я могу сохранить структуру многокомпонентных в другом случае.

Используйте атрибут my-header и my-content для различения.

<my-detailpage>
 <my-header pagetype="detailpage">{{ text }} </my-header>
 <my-content pagetype="detailpage">{{ content }} </my-content>
</my-detaipage>

<my-listpage>
 <my-header pagetype="listpage">{{ text }} </my-header>
 <my-content pagetype="listpage">{{ content }} </my-content>
</my-listpage>
Другие вопросы по тегам