2017-01-23 116 views
1

如何更改組件名稱,取決於點擊列表我需要將組件模板<FAQ-omni></FAQ-omni>更改爲其他可能的模板?更改組件模板名稱角2

<div class="row"> 
     <div class="col-xlg-4 col-xl-12 col-lg-12 col-md-7 col-sm-12 col-xs-12" title="FAQ" baCardClass="medium-card with-scroll"> 
     <FAQ-omni></FAQ-omni> 
     <ul class="alShare"> 
     <li (click)="Show(1)">Locator</li> 
     <li (click)="Show(2)">Offer</li> 
     <li (click)="Show(3)">Contact</li> 
     <li (click)="Show(4)">Holiday</li> 
     <li (click)="Show(5)">FAQ</li> 
     </ul> 
     </div> 
</div> 

回答

1

組件名稱是靜態的,你所能做的就是傳遞他的信息與類似

在你的組件,組件,聲明一個變量

public selected: number; 

在你的表演方法,設置被選爲

public show(num: number) 
{ 
    this.selected = num; 
} 

然後在你的模板中使用這個選定的屬性傳遞信息,如

<FAQ-omni selected="selected"></FAQ-omni> 

在您答疑解惑,全方位組件,您可以收到此變量作爲輸入像

@Component({ 
    selector: 'FAQ-omni', 
    templateUrl: '/template/path.html', 
    inputs: ['selected'] 
}) 
export class LoginComponent 
{ 
    public selected: number; 
} 

並使用你的模板來渲染/隱藏任何你想要的信息,這個選擇。

甚至可以使用此變量根據您的條件使用* ngIf指令顯示其他組件。

<FAQ-omni *ngIf="selected == 1"></FAQ-omni> 
<SomeOther-Component *ngIf="selected == 2"></SomeOther-Component> 
2

你不應該更改模板選擇,因爲它們在頁面上定義的,你應該建立一個更通用的模板,並使用@input()來傳遞的內容和插在頁面上或傳遞您的預定義號碼。

<div class="row"> 
    <div class="col-xlg-4 col-xl-12 col-lg-12 col-md-7 col-sm-12 col-xs-12" title="FAQ" baCardClass="medium-card with-scroll"> 
     <FAQ [faqData]="faqData"></FAQ> 
     <ul class="alShare"> 
     <li (click)="Show(1)">Locator</li> 
     <li (click)="Show(2)">Offer</li> 
     <li (click)="Show(3)">Contact</li> 
     <li (click)="Show(4)">Holiday</li> 
     <li (click)="Show(5)">FAQ</li> 
     </ul> 
    </div> 
</div> 

代碼behind.ts

export class CodeBehind { 

    public faqData: SomeObject = {//define default}; 

    public Show(faqToShow: number) { 

     switch(faqToShow) { 

     case 1: 
      this.faqData = Locator 
     case 2: 
     //and so on... 

     } 
    } 
} 

faq.component.ts

export class FAQ { 

    @Input() public faqData: SomeObject; 
} 

如果你做到這一點上面,你會在父定義對象的方式組件,但是傳遞一個數字意味着您可以在FAQ中定義內容,將其與父項分開,但這取決於您。