Angular 角度贴图按钮切换渲染未绑定到ngModel

Angular 角度贴图按钮切换渲染未绑定到ngModel,angular,typescript,angular-material,ngmodel,Angular,Typescript,Angular Material,Ngmodel,我一直在尝试修复一个bug,其中mat button toggle元素呈现为“selected”,即使ngModel有一个false值。我发现了一些至少对我来说很奇怪的东西。考虑一个代码示例: .html <mat-button-toggle [(ngModel)]="myVar" (change)="toggle()" ngDefaultControl name="myVar"> TOGGLE ME </mat-button-toggl

我一直在尝试修复一个bug,其中
mat button toggle
元素呈现为“selected”,即使
ngModel
有一个
false
值。我发现了一些至少对我来说很奇怪的东西。考虑一个代码示例:

.html

<mat-button-toggle 
    [(ngModel)]="myVar" 
    (change)="toggle()"
    ngDefaultControl
    name="myVar">
  TOGGLE ME
</mat-button-toggle>
我期望:

单击按钮后,它不会呈现为“选定”,因为
myVar
仍然具有
false

实际发生的情况:

该按钮显示为“选定”,忽略实际的
myVar


我有一种感觉,我错过了一些核心的角度理解,这让我无法理解为什么它不能像我期望的那样工作。您能帮我理解这里的错误吗?

MatButtonToggle不支持angular的双向绑定。要使绑定正常工作,组件需要实现MatButtonToggle没有实现的
ControlValueAccessor
。相反,您可以侦听事件并手动绑定它

<mat-button-toggle 
  [checked]="myFlagForButtonToggle" 
  (change)="myFlagForButtonToggle = $event.source.checked">
    Toggle me!
</mat-button-toggle>

切换我!

您没有得到
错误:对于未指定名称属性的表单控件,没有值访问器
?我决定从问题中删除
ngDefaultControl
,以简化它,但我会重新添加它。这个问题仍然存在。我想应该是[(ngModel)]=“myVar”你是说双引号吗?如果是,只是尝试了一下,没有帮助。不过,为了保持一致性,我会用双引号更新这个问题,谢谢。
<mat-button-toggle 
  [checked]="myFlagForButtonToggle" 
  (change)="myFlagForButtonToggle = $event.source.checked">
    Toggle me!
</mat-button-toggle>