2016-08-30 2 views
0

상위 구성 요소 (MainComponent)에서 하위 구성 요소 (ChildComponent)로 값을 전달하려고하지만 하위 구성 요소가 상위 템플릿에 선언되어 있지 않고 대신 내부로드됩니다. 부모의 친 컴퍼넌트 (AppComponent)의 ngContent Demo : ngContent 내에서 구성 요소에 값 전달

@Component({ 
    selector: 'my-app', 
    template: '<div>' + 
    '<main-component><child-component [big]="big"></child-component></main- component>' + 
    '<main-component><childuo-component [small]="big"></childuo-component></main-component>' + 
    '</div>' 
}) 
export class AppComponent { } 

@Component({ 
    selector: 'main-component', 
    template: '<div><div>{{big | lowercase}}</div><div><ng-content></ng-content></div>' 
}) 
export class MainComponent { 
    big: string = "BIG"; 
} 

@Component({ 
    selector: 'child-component', 
    template: '<div>Finally: {{big}}</div>' 
}) 
export class ChildComponent { 
    @Input() big: string; 
} 

@Component({ 
    selector: 'childuo-component', 
    template: '<div>Second?: {{small}}</div>' 
}) 
export class ChildDuoComponent { 
    @Input() small: string; 
} 

은 내 질문을 보여주기 위해 plunker를 만들었습니다.

MainComponent가 다른 하위 구성 요소를 보유하고 상위 구성 요소 (AppComponent)에 선언하도록 허용하는 방법에 대한 자세한 내용을 포함하도록 질문을 업데이트했습니다.

답변

1

big의 변수는 AppComponent에 정의되어 있지 않으므로 값이 표시되지 않습니다.

작은 따옴표 "'big'" 주위에 올리기.

@Component({ 
    selector: 'my-app', 
    template: `<main-component> 
    <child-component [big]="'big'"></child-component> 
    <child-component [big]="someVar"></child-component> 
    </main-component>` 
}) 
export class AppComponent { 
    someVar = 'someVar'; 
} 

여기이 도움이 Plunker

희망입니다!

+0

MainComponent에서 큰 변수를 가져 와서 ChildComponent에 전달하려고합니다. –

+0

'ng-content'가 어떻게 작동하는지, 실제 HTML이 정의 된 곳에서 바인딩을 취하고,'AppComponent'에서 여러분의 경우에, 어떤 변수를 main에서 child로 전달하고자한다면, 직접 자식 컴포넌트를 정의 할 수 있습니다 '주요 구성 요소'. 건배! –

+0

그리고 여러 AppComponent에서 MainComponent에 다른 ChildComponents를 삽입 할 수있는 모델을 정의하는 방법이 있습니까? –

관련 문제