将 [(ngModel)] 添加到单选按钮组后,默认的 [checked] 不再起作用

2024-03-03

我正在开发一个小型可重用组件,它可以设置单选按钮的样式并发出选定的值。

import { Component, OnInit, Input, Output, EventEmitter } from "@angular/core";

@Component({
    moduleId: module.id,
    selector: 'button-select',
    template: `<div class="toggle-group">
                    <div *ngFor="let choice of choices">
                        <input type="radio"
                               id="{{ groupName + choice }}"
                               name="{{groupName}}"
                               value="{{ choice }}"
                               [checked]="choice === defaultChoice"
                               [(ngModel)]="value"
                               (ngModelChange)="choose($event)" />
                        <label class="toggle-button"
                               for="{{ groupName + choice }}">{{ choice }}</label>
                    </div>
                </div>`,
    styleUrls: [
        'editableField.css',
        'buttonSelect.css'
    ]
})

export class ButtonSelectComponent implements OnInit {
    @Input() choices: string[];
    @Input() defaultChoice: string;
    @Input() groupName: string;
    @Input() value: string;

    @Output() valueChosen: EventEmitter<any> = new EventEmitter();

    ngOnInit() {
        this.choose(this.defaultChoice);
    }

    private choose(value: string) {
        this.valueChosen.emit(value);
    }
}

该组件的实现方式如下:

<button-select #statusFilter
               [choices]="['All', 'Active', 'Draft']"
               [defaultChoice]="'All'"
               [groupName]="'statusFilter'"
               (valueChosen)="filterChosen('statusFilter', $event)"
</button-select>

Before adding [(ngModel)]="value" (ngModelChange)="choose($event)"到按钮选择组件,[checked]="choice === defaultChoice"指令正确设置checked相关属性<input />.

After添加[(ngModel)], only ng-reflect-checked="true"被设置,这会阻止视觉样式显示默认值(因为我的 CSS 使用伪选择器)。

改变[(ngModel)] for [ngModel]没有效果。

为什么会发生这种情况以及如何解决它?


我想,你不需要这个[checked]="choice === defaultChoice"。尝试这个 :

<input type="radio"
       id="{{ groupName + choice }}"
       name="{{groupName}}"
       [value]="choice"
       [(ngModel)]="defaultChoice"
       (ngModelChange)="choose($event)" />

When [value] = [(ngModel)]收音机已选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 [(ngModel)] 添加到单选按钮组后,默认的 [checked] 不再起作用 的相关文章

随机推荐

  • 如何针对 TextReader 使用正则表达式?

    在 可能 非常大的文本中查找模式的最佳方法是什么 我可以使用正则表达式 但它接受字符串作为参数 有没有办法将它与 TextReader 或某种流一起使用 不 正则表达式可能需要进行回溯 由于流只能向前读取 这意味着无论如何它都必须将整个流保
  • 无法在 Docker 容器内从 Google API 交换 AccessToken

    我有一个用 Go 编写的网络应用程序 使用 oauth2 包golang org x oauth2 通过 Google 登录用户 按照本教程操作https developers google com identity sign in web
  • Facebook API - uids 和电子邮件 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试开发一个应用程序 用户 X 已登录 Facebook 应用程序有一组电子邮件地址 可能是用户 X 的朋友 应用程序获取用户
  • 为什么要在 Objective C 构造函数中使用 [super init]?

    假设我有一个名为 Item 的类 它是 NewsItem 和 TwitterItem 的超类 如果我想创建一些 NewsItem 我必须使用 在构造函数内 self super init 如果是 为什么 在 Java C 中我会这样做 Ne
  • Flexbox 实现水平滚动

    我正在使用 Flexbox 布局制作一个购物中心网站 但 Flexbox 在某些区域会导致问题 Flexbox 似乎在某些区域进行水平滚动 但我不希望这样 您的问题是横幅中的图像太宽 无法适应大多数视口 因此它们迫使页面变宽 没有简单的方法
  • 在 R 中重复多个 NULL

    在我的模拟中 我需要一个如下所示的向量 vec NULL NULL NULL NULL 2 2 2 2 4 4 4 4 但是 在 R 中 当我使用rep NULL 4 它什么也不返回 例如 vec all c rep NULL 4 rep
  • SwiftUI 垂直未对齐的文本

    我有一些垂直未对齐的文本 我不知道为什么 代码 struct IBANInputView View State var securityDigits State var bankCode State var accountNumber va
  • CSS 动画在 Chrome 中不起作用

    对项目的一些见解 一个完整的交互式网站 动画将在其中播放 然后它们会停止 一旦它们停止并且动画上发生鼠标悬停事件 它将播放直到动画完成 70 当单击另一个对象时 在本例中 案例文本 它将完成它的循环 我的项目合作伙伴在 Google Web
  • 语法与运算符结合性之间的关系

    一些编译器书籍 文章 论文谈论语法的设计及其运算符的结合性的关系 我是自上而下的忠实粉丝 尤其是递归下降 解析器 到目前为止我编写的大多数 如果不是全部 编译器都使用以下表达式语法 Expr Term Term Term Factor Fa
  • 适用于 emacs 的交互式拼写检查程序

    我最近切换到 emacs24 并升级到 Ubuntu 12 04 我似乎无法让 hunspell 再次正常工作 我发现 hunspell 总体上比 aspell 更好 Hunspell 只想使用澳大利亚词典而不是英语美国词典 否则会冻结我的
  • 如何将 selenium webelelements 转换为 python 中的字符串列表

    我从 Scopus 网站收集了强制性数据 我的输出已保存在名为 文档 的列表中 当我对这个列表的每个元素使用 type 方法时 python 返回这个类
  • 接受 Flask url 中的整数列表而不是一个整数

    我的 API 有一个通过 url 中传递的 int id 来处理用户的路由 我想传递一个 id 列表 这样我就可以向 API 发出一个批量请求 而不是多个单个请求 我如何接受 id 列表 app route user
  • 运行应用程序时,在 VSCode 中启动 ASP.NET Core 应用程序中的特定 URL

    如果重要的话 可以在 Mac 上运行 在 Visual Studio 中 您可以在运行或调试 ASP NET Core 项目时使用此方法启动特定 URL 使用 launchUrl 属性 这是一个示例 launchSettings json
  • Laravel 按日期时间格式中的小时进行分组

    如何按一天中的时间对网站上的 注册 进行分组 我已经尝试过了 但它不起作用 regs DB table registrations gt select createddatetime DB raw COUNT id gt groupBy D
  • 如何访问 docker-compose 在 haproxy 配置中创建的副本

    我有一个简单的 haproxy cfg 如下所示 frontend http bind 8080 mode http use backend all backend all mode http server s1 ws 8080 现在我有一
  • 在 Haskell 中查找给定集合 A 和通用集合 U 的补集 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我尝试编写一个函数 补集 给定一个集合 A 和一个通用集 U 返回 A 相对于 U 的补集 包装在 Just 类型构造函数中 我必须仔
  • 根据标题开始位置将 CSV 读入 R

    我有大量 CSV 文件 有些标题从第一行开始 有些标题从第三行开始 有些则从第七行开始 依此类推 标题看起来都一样 只是在不同文件的不同行上开始 有没有办法有条件地读取 csv 文件以从标题开始的位置开始 例如 如果我知道标题都具有第一个列
  • 在附加的堆栈跟踪中获取了资源但从未释放 - 错误

    我不确定为什么会收到此错误 五分之二的我使用模拟器设置壁纸时 收到错误 在附加的堆栈跟踪中获取了资源 但从未释放 有关避免资源泄漏的信息 请参阅 java io Closeable 当我使用手机设置壁纸时 效果非常好 没有任何故障 为什么我
  • 了解微架构原因,使更长的代码执行速度提高 4 倍(AMD Zen 2 架构)

    我有以下 C 17 代码 是在 x64 模式下使用 VS 2019 版本 16 8 6 编译的 struct declspec align 16 Vec2f float v 2 struct declspec align 16 Vec4f
  • 将 [(ngModel)] 添加到单选按钮组后,默认的 [checked] 不再起作用

    我正在开发一个小型可重用组件 它可以设置单选按钮的样式并发出选定的值 import Component OnInit Input Output EventEmitter from angular core Component moduleI