【问题标题】:Create an angular component without wrapper tag创建一个没有包装标签的角度组件
【发布时间】:2018-12-13 12:18:16
【问题描述】:

我想生成一个没有包装标签的组件。我阅读了所有类似的 SO 问题(例如 SO1SO2SO3),但没有找到合适的解决方案。

我现有的简化组件(toggle-button.component.ts):

import {Component} from "@angular/core";

@Component({
    selector: "toggle-button, [toggleButton]",
    template: `<button type="button" class="btn btn-primary">{{ label }}</button>`
})

export class ToggleButtonComponent {

    @Input()
    public label: string;
}

我要创建的第二个组件(select-button.component.ts):

import {Component} from "@angular/core";

@Component({
    selector: "select-button",
    template: `
    <div class="btn-group" role="group">
        <ng-container *ngFor="let item of items">
             <ng-container toggleButton [label]="item.label"></ng-container>
        </ng-container>
    </div>
    `
})

export class SelectButtonComponent {

    @Input()
    public items: {label: string; value: any;};
}

我的app.component.html

<select-button [items]="items"></select-button>

结果是错误:

在 'Node' 上执行 'appendChild' 失败:此节点类型不支持此方法。

我想要实现的是这样的 HTML 结构:

<div class="btn-group" role="group">
    <button type="button" class="btn btn-primary">12 H</button>
    <button type="button" class="btn btn-primary">24 H</button>
</div>

代替:

<div class="btn-group" role="group">
    <toggle-button>
        <button type="button" class="btn btn-primary">12 H</button>
    </toggle-button>
    <toggle-button>
        <button type="button" class="btn btn-primary">24 H</button>
    </toggle-button>
</div>

Stackblitz link

【问题讨论】:

  • 你可以为此创建 stackbliz 示例吗?
  • 我加了一个。
  • 在 stackblitz 中您正在使用组件,而在您的问题中您正在使用属性选择器。
  • 我同时使用属性和 css 选择器。但我已经更新了我的 stackblitz。

标签: angular


【解决方案1】:

最简单的方法是避免toggle-button.component.ts,直接在select-button.component html中插入标签,例如:

 <ng-container *ngFor="let item of items">
         <button type="button" class="btn btn-primary">{{item.label}}</button>
    </ng-container>
</div>

【讨论】:

  • 是的,但是我的切换按钮比本示例中的更复杂,我想将这种复杂性封装在选择按钮之外。切换按钮也是一个独立的组件,我在我的应用程序的其他部分使用它。
猜你喜欢
  • 2018-06-04
  • 2021-08-17
  • 2016-12-07
  • 2013-11-16
  • 2019-02-09
  • 2022-11-24
  • 1970-01-01
  • 2020-08-30
  • 1970-01-01
相关资源
最近更新 更多