2017-12-10 5 views
0

각도 4는 동적 ng 콘텐츠를 가질 수 있습니다. 난 그냥 원하는각도 4는 동적 선택을 사용하여 동적 ng 콘텐츠를 가질 수 있습니다.

<customslider slides="2"> 
    <div slide1> 

    </div> 
    <div slide2> 

    </div> 
</customslider> 

내 부모 구성 요소에서

<ion-slides [pager]="true" #Slides (ionSlideDidChange)="onSlideChanged()"> 
<ion-slide class="slide1"> 
    <ng-container *ngIf="!isMenuOpen"> 
    <ng-container *ngTemplateOutlet="slide1"></ng-container> 
    </ng-container> 
</ion-slide> 
<ion-slide class="slide2"> 
    <ng-container *ngIf="!isMenuOpen"> 
     <ng-container *ngTemplateOutlet="slide2"></ng-container> 
    </ng-container> 
</ion-slide> 
</ion-slides> 
<ng-container *ngIf="isMenuOpen"> 
    <div class="sidemenu-open-slide slide1" *ngIf="isMenuOpen && slideActiveIndex==0"> 
     <ng-container *ngTemplateOutlet="slide1"></ng-container> 
    </div> 
    <div class="sidemenu-open-slide slide2" *ngIf="isMenuOpen && slideActiveIndex==1"> 
     <ng-container *ngTemplateOutlet="slide2"></ng-container> 
    </div> 
    <div class="side-menu-slider-pagination"> 
     <button class="swiper-pagination-bullet" *ngFor="let page of [0,1]" style="margin: 0 5px;" [ngClass]="{'swiper-pagination-bullet-active':slideActiveIndex==page}"></button> 
    </div> 
</ng-container> 
<ng-template #slide1> 
    <ng-content select="[slide1]"></ng-content> 
</ng-template> 
<ng-template #slide2> 
    <ng-content select="[slide2]"></ng-content> 
</ng-template> 

: 일부는, 슬라이드 2를 정적 슬라이드 1을 제거 할 수있는 방법을 제공 할 수 있습니다 그것은 하위 구성 요소의 * ngFor

내용에 의해 구현 될 수 있도록 아래의 경우를 처리해야합니다.

<customslider slides="N"> 
    <div slide1> 

    </div> 
    <div slide2> 

    </div> 
    <div slideN> 
     nth slide 
    </div> 
</customslider> 
+0

무엇을 사용하고 있는지 알기가 어렵습니다. 슬라이드 인 경우, "slide1"속성을 추가 할 필요가 없습니다. 귀하의 코드는 "class"를 사용하므로 항목의 항목을 사용하여 [ngClass] = "{{ 'slide'+ index}}, index = i를 사용할 수 있습니다. 그러나 당신이 우리에게주는 몇 가지 데이터로 우리는 당신을 더 도울 수 없습니다. – Eliseo

+0

@Eliseo 응답 해 주셔서 감사합니다. 난 그냥 경우에 구성 요소를 만들려는 isMenuOpen 거짓이다 난 그냥 슬라이드의 콘텐츠를 transclude 싶어요 다른 경우에, 난 그냥 다른 div에 transclude 싶어요. 문제는이 슬라이드 번호가 미래에 n 일 수 있음을 알 수 없다는 것입니다. –

답변

0

죄송합니다, 원하는 것을 원하십니까? 이자형?

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

@Component({ 
    selector: 'app-div-for', 
    template:` 
    <div *ngFor="let i of items" [ngClass]="'slide'+i"> 
    div-for works! 
</div>`, 
    styleUrls: ['./div-for.component.css'] 
}) 
export class DivForComponent implements OnInit { 

    items:any[]; 
    @Input('cont') set cont(value:number){ //get input to fill "items" 
    console.log(value); 
    this.items=[]; 
    for (let i=0;i<value;i++) 
     this.items.push(i); 
    } 
    constructor() { } 
    ngOnInit() {} 
} 

다른 구성 요소에 사용합니다.

<app-div-for [cont]="5"></app-div-for> 
+0

예 동일하지만 콘텐츠는 구성 요소에서 한 번만 제공되어야하며 두 곳의 다른 장소에서 복제되어야합니다.

content1
content2
content3
content4
content5