angular - Mat-checkbox checked 不改变复选框状态

标签 angular angular-material angular-material2

我正在实现一个显示复选框的语言切换组件,应用程序的每种语言对应一个复选框(使用 @ngx-translate 进行翻译)。

当点击其中一个复选框时,应用语言会正确切换,但点击的 mat-checkbox 仍未选中。

模板:

<mat-checkbox [checked]="selectedLanguage == 'en'" (click)="switchLanguage('en')">English</mat-checkbox>
<mat-checkbox [checked]="selectedLanguage == 'fr'" (click)="switchLanguage('fr')">French</mat-checkbox>
<mat-checkbox [checked]="selectedLanguage == 'de'" (click)="switchLanguage('de')">German</mat-checkbox>

组件:

export class CheckboxOverviewExample {
  public selectedLanguage: string;

  constructor(){
    this.selectedLanguage = 'fr';
  }

  public switchLanguage(lang: string) {
    this.selectedLanguage = lang;
    // this.translateService.use(lang); // changing ngx-translate language
    console.log('Switched to ' + lang);
  }
}

[checked] 绑定(bind)在您路由到组件时起作用。法语的 mat-checkbox 在登陆组件时确实被选中(默认值)。现在,当我单击德语或英语时,语言确实会切换,法语复选框会正确取消选中,但是单击的复选框不会选中。

我遗漏了一些东西,可能是一个小细节,但我不明白为什么德语/英语不检查而法语正确取消检查。

看看this simple stackblitz code重现我的案例。

最佳答案

所以我有一个答案给你。不需要使用单选按钮,因为您的设计师讨厌它,只需使用

<mat-checkbox [checked]="selectedLanguage === 'en'" (change)="switchLanguage('en')">English</mat-checkbox>
<mat-checkbox [checked]="selectedLanguage === 'fr'" (change)="switchLanguage('fr')">French</mat-checkbox>
<mat-checkbox [checked]="selectedLanguage ==='de'" (change)="switchLanguage('de')">German</mat-checkbox>

也使用 selectedLanguage === 'en' 检查类型和值

另外,使用 (change)="switchLanguage('de') 而不是点击

工作 here 或查看 this

关于angular - Mat-checkbox checked 不改变复选框状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49749308/

相关文章:

angular - 如何在 Angular Material 设计组件中更改 Mat-Card 元素的高度

Angular Material - MdInput 到 MatInputModule?

angular - 如何在 Angular 4 中使用 Material Design 图标?

angular - 在企业 Artifactory 中发布 Angular 库

javascript - 使用模块 xlsx 样式时无法找到命名空间 XLSX

node.js - 由于以下错误,无法安装 tsd 软件包

angular - Angular Material 6 中的 CustomeDateAdapter

Angular 2+ 是否可以避免全局 CSS?

angular - 仅当处于事件状态时如何显示 Material 选项卡内容?

css - Angular Material 固定侧导航