angular - Angular2 中的共享 RadioButton 组件

标签 angular data-binding radio-button components shared

我想在同一页面上重用我的组件,但我在定义单选按钮的值时遇到问题,具体取决于我正在处理的单选按钮。

我有三个共享组件,但我不知道如何区分它们。我的意思是,如果我处理第一个组件,我不希望其他两个组件被修改。 我使用“激烈”模式解决了这个问题,并且我想做得更好。任何建议将不胜感激。

这是我的 html 代码:

<div class="ui form">
  <div class="inline fields">
    <label for="fruit">Send to:</label>
    <div class="field">
      <div class="ui radio checkbox">
        <input type="radio" name="radio{{A}}{{B}}" value="selected" [(ngModel)]="option">
        <label>Send Selected</label>
      </div>
    </div>
    <div class="field">
      <div class="ui radio checkbox">
        <input type="radio" name="radio{{A}}{{B}}" value="all" [(ngModel)]="option">
        <label>Send All</label>
      </div>
    </div>
  </div>
</div>

我正在做的方法是声明值 A 和 B,它们是 bool 值,但我认为这是一个不好的解决方法。

他的组件中的变量是:

@Input() A: boolean;
@Input() B: boolean;
@Input() C: boolean;
private option: string = 'selected';

有什么方法可以改进这个解决方案吗? :

name="radio{{A}}{{B}}"

最佳答案

有点不清楚 A、B 和 C 的用途,但仅使用 2 个 bool 值将严重限制您可以使用的唯一可能实例的数量。

无论如何,我会执行以下操作之一:

  • 创建一个服务,为组件的每个实例生成唯一的名称,组件将调用OnInit,并在其剩余的生命周期中存储该名称(当然你可以回收OnDestroy)。

  • 添加另一个@Input作为单选组的名称,并让组件的使用者决定如何命名该组。

更新:

我刚刚注意到您不必使用 name= 属性,您可以省略它,当使用 [(ngModel)] 绑定(bind) radio 输入时,Angular 会自动对它们进行分组 code> 到同一个“东西”。

关于angular - Angular2 中的共享 RadioButton 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42483161/

相关文章:

json - 如何在 Angular6 中从 JSON 文件获取日期值

angular - clearvalidators() 未按预期与 Angular 中的表单重置方法一起工作

android - 如何通过集成数据绑定(bind) android 来更改我现有的代码

javascript - 具有相同名称的单选按钮的在线测验

javascript - 我一直在 javascript 中收到此错误? ( radio ,在 javascript 中检查它们)

html - 未出现具有百分比高度的 ngx-infinite-scroll

javascript - 如何将 angular 2 app.module 转换为 es6

c# - 如果选择列表项,则实现 CanExecute 以启用按钮

c# - 多选 WinForms 列表框的双向绑定(bind)?

php - 使用 PHP 将单选按钮值添加到 MYSQL 表