首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改组件模板名角2

更改组件模板名角2
EN

Stack Overflow用户
提问于 2017-01-23 10:41:43
回答 2查看 899关注 0票数 1

如何更改组件名称,取决于单击列表,我需要将组件模板<FAQ-omni></FAQ-omni>更改为其他可能的模板吗?

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-23 10:49:31

组件名称是静态的,您可以做的是将信息传递给该组件,其内容如下

在组件中,声明一个变量

代码语言:javascript
复制
public selected: number;

在显示方法中,将选定的

代码语言:javascript
复制
public show(num: number)
{
    this.selected = num;
}

然后在模板中使用选定的属性传递以下信息

代码语言:javascript
复制
<FAQ-omni selected="selected"></FAQ-omni>

在FAQ-omni组件中,可以将此变量作为输入接收,如下所示

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

并使用模板中选定的内容来呈现/隐藏所需的任何信息。

您甚至可以使用*ngIf指令根据您的条件使用这个变量来显示其他组件。

代码语言:javascript
复制
<FAQ-omni *ngIf="selected == 1"></FAQ-omni>
<SomeOther-Component *ngIf="selected == 2"></SomeOther-Component>
票数 1
EN

Stack Overflow用户

发布于 2017-01-23 10:53:34

您不应该更改模板选择器,因为它们是在页面上定义的,您应该构建一个更通用的模板,并使用@ the ()在页面上传递和内插内容,或者传递预定义的数字。

代码语言:javascript
复制
<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>

code-behind.ts

代码语言:javascript
复制
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

代码语言:javascript
复制
export class FAQ {

    @Input() public faqData: SomeObject;
}

如果您这样做,您将在父组件中定义对象,但是传递一个数字意味着您可以在FAQ中定义内容,将其从父组件中分离出来,但这取决于您。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41804399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档