Angular 角度贴图按钮切换渲染未绑定到ngModel
我一直在尝试修复一个bug,其中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
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>