ベースパネルを表すコンポーネント(HTMLテンプレート付き)を作成したいと思います。次に、この基本クラスを継承したいが、タイトル(クラス属性/関数または@Input
)とコンテンツ(またはtemplateUrl
の@Component
デコレータ)を指定するだけです。Angular2:ベースコンポーネント - タイトルと内容のパネル
@Component({
template: `
<div class="panel">
<div class="title">{{title}}</idv>
<div class="content">???</div>
</idv>
`
})
export class BasePanel {
@Input()
protected title: string = '';
}
@Component({
selector: 'my-panel',
template: `MyPanel template - lorem ipsum`
})
export class MyPanel extends BasePanel {
title: string = 'MyPanel title';
}
その後、他のテンプレートに:
<my-panel></my-panel>
または
<my-panel title="My better panel"></my-panel>
非常に良い解決策は、HTMLタグの間にコンテンツを配信するために、次のようになります。
<my-panel title="My panel with content">
<p>Lorem ipsum dolor sit amet,</p>
<p>consectetur adipiscing elit.</p>
</my-panel>
編集1
ng-contentを含む@rinukusuの溶液が働いています。
しかし、BasePanel
コンポーネントを作成して派生コンポーネントテンプレートをデコレートする可能性があります。
派生したコンポーネントテンプレートをどのように飾るのか分かりません。 "手段。もう少し詳しく教えていただけますか? –
@GünterZöchbauerコンポーネントでは、パネルコンテンツ(変数など)にのみHTMLを追加したいと思います。これは、埋め込み、余白、境界線などを宣言するHTMLによって装飾されます。好ましくは、この装飾は 'BasePanel'によって行われますが、このような考え方はPHPに由来します。 – koral
以下に説明する ' 'のようなサウンドは正しいものです。 –