2016-09-02 19 views
5

Chcę utworzyć komponent, taki jak szablon. Na przykład, zamiast pisać to wszędzie:Angular2 Html wewnątrz komponentu

<div class="myClass"> 
    <div class="myHeader" id="headerId"> Title </div> 
    <div class="myContent" id="contentId"> <<Some HTML code>> </div> 
</div> 

chcę użyć komponentu jak:

<my-component title="Title" headerID=headerId contentID=contentID> 
    <<Some HTML code>> 
</my-component> 

Jak mogę zaimplementować coś jak te w Angular2?

+1

Co próbowaliście? Jaki jest problem? W jaki sposób powiązany jest "<< Some HTML code >>"? –

+1

Nic nie próbowałem, ponieważ nie mam dużego doświadczenia w Angular2. Przeszukałem go, ale nie mogłem znaleźć niczego podobnego do tego, co chcę. Szukam tutaj sugestii. –

+0

Czego więc chcesz? Jakie jest pożądane zachowanie lub rezultat? Jeśli po prostu tworzysz prosty komponent, co nie robi, co chcesz? –

Odpowiedz

-1

coś takiego:

moi-component.ts

import { Component, Input } from '@angular/core'; 

@Component({ 
selector: 'my-component', 
template: ` 
<div>{{title}}</div> 
<div>{{body}}</div> 
` 
}) 

export class ChildComponent { 

@Input() title: string; 
@Input() body: string; 

} 

Wtedy można go używać tak:

<my-component 
    [title]="someTitle" 
    [body]="someBody"> 
</my-component> 

Uwaga: Jeśli dodać body i title z [] będzie szukać komponent, w którym używasz <my-component> dla zmienne o nazwach someTitle i someBody, ale jeśli dodasz je bez [], będą to ciągi oznaczone jako someTitle i someBody.

+0

Myślę, że połączenie tego i będzie działać dobrze dla mnie. Dziękuję Ci! –

+0

Nie ma za co, napisz tutaj, jeśli napotkasz jakiekolwiek problemy. –

23

Użyj <ng-content></ng-content> w swoim komponencie.

my.component.html

<div class="myClass"> 
    <div class="myHeader" id="headerId"> Title </div> 
    <div class="myContent" id="contentId"> <ng-content></ng-content> </div> 
</div> 

parent.component.html

<my-component title="Title" headerID=headerId contentID=contentID> 
    <<Some HTML code>> 
</my-component> 

Cokolwiek jest w środku <my-component></mycomponent> będą renderowane w <ng-content></ng-content>

+0

Dokładnie tego chcę. Dzięki! –

+0

Czy istnieje sposób na wymuszenie leniwego ładowania zawartości? Jeśli pod warunkiem, że w moim komponencie znajduje się , cała zawartość zostanie zainicjowana, nawet jeśli warunek będzie fałszywy - np. Gdy zawartość zawiera inne składniki. – Antoniossss

Powiązane problemy