Angular mat-button-toggle 渲染不绑定到 ngModel
Angular mat-button-toggle rendering does not bind to ngModel
我一直在尝试修复 mat-button-toggle
元素呈现为 "selected" 的错误,即使 ngModel
具有 false
值。我发现了一些东西,至少对我来说看起来很奇怪。考虑一个代码示例:
.html
<mat-button-toggle
[(ngModel)]="myVar"
(change)="toggle()"
ngDefaultControl
name="myVar">
TOGGLE ME
</mat-button-toggle>
.ts
myVar = false
toggle() {
// do nothing!
}
我预计:
单击按钮后,它不会呈现为 "selected",因为 myVar
仍然具有 false
值。
实际发生了什么:
按钮呈现为 "selected",忽略实际的 myVar
值。
我觉得我错过了一些核心 Angular 理解,这让我无法理解为什么它不像我期望的那样工作。你能帮我理解这里出了什么问题吗?
MatButtonToggle 不支持angular 的双向绑定。要使 Angular 两个绑定正常工作,组件需要实现 ControlValueAccessor
而 MatButtonToggle 不需要。相反,您可以监听事件并手动绑定它。
<mat-button-toggle
[checked]="myFlagForButtonToggle"
(change)="myFlagForButtonToggle = $event.source.checked">
Toggle me!
</mat-button-toggle>
我一直在尝试修复 mat-button-toggle
元素呈现为 "selected" 的错误,即使 ngModel
具有 false
值。我发现了一些东西,至少对我来说看起来很奇怪。考虑一个代码示例:
.html
<mat-button-toggle
[(ngModel)]="myVar"
(change)="toggle()"
ngDefaultControl
name="myVar">
TOGGLE ME
</mat-button-toggle>
.ts
myVar = false
toggle() {
// do nothing!
}
我预计:
单击按钮后,它不会呈现为 "selected",因为 myVar
仍然具有 false
值。
实际发生了什么:
按钮呈现为 "selected",忽略实际的 myVar
值。
我觉得我错过了一些核心 Angular 理解,这让我无法理解为什么它不像我期望的那样工作。你能帮我理解这里出了什么问题吗?
MatButtonToggle 不支持angular 的双向绑定。要使 Angular 两个绑定正常工作,组件需要实现 ControlValueAccessor
而 MatButtonToggle 不需要。相反,您可以监听事件并手动绑定它。
<mat-button-toggle
[checked]="myFlagForButtonToggle"
(change)="myFlagForButtonToggle = $event.source.checked">
Toggle me!
</mat-button-toggle>