diff --git a/src/lib/button-toggle/button-toggle.spec.ts b/src/lib/button-toggle/button-toggle.spec.ts
index c1c00fe08a02..1bb11660d71a 100644
--- a/src/lib/button-toggle/button-toggle.spec.ts
+++ b/src/lib/button-toggle/button-toggle.spec.ts
@@ -205,6 +205,7 @@ describe('MatButtonToggle without forms', () => {
declarations: [
ButtonTogglesInsideButtonToggleGroup,
ButtonTogglesInsideButtonToggleGroupMultiple,
+ FalsyButtonTogglesInsideButtonToggleGroupMultiple,
ButtonToggleGroupWithInitialValue,
StandaloneButtonToggle,
ButtonToggleWithAriaLabel,
@@ -694,6 +695,22 @@ describe('MatButtonToggle without forms', () => {
expect(fixture.componentInstance.toggleGroup.value).toBe('Seven');
expect(fixture.componentInstance.toggles.toArray()[2].checked).toBe(true);
});
+
+ it('should select falsy button toggle value in multiple selection', () => {
+ const fixture = TestBed.createComponent(FalsyButtonTogglesInsideButtonToggleGroupMultiple);
+ fixture.detectChanges();
+
+ expect(fixture.componentInstance.toggles.toArray()[0].checked).toBe(true);
+ expect(fixture.componentInstance.toggles.toArray()[1].checked).toBe(false);
+ expect(fixture.componentInstance.toggles.toArray()[2].checked).toBe(false);
+
+ fixture.componentInstance.value = [0, false];
+ fixture.detectChanges();
+
+ expect(fixture.componentInstance.toggles.toArray()[0].checked).toBe(true);
+ expect(fixture.componentInstance.toggles.toArray()[1].checked).toBe(false);
+ expect(fixture.componentInstance.toggles.toArray()[2].checked).toBe(true);
+ });
});
@Component({
@@ -748,6 +765,21 @@ class ButtonTogglesInsideButtonToggleGroupMultiple {
isVertical: boolean = false;
}
+@Component({
+ template: `
+
+ Eggs
+ Flour
+ Sugar
+ Sugar
+
+ `
+})
+class FalsyButtonTogglesInsideButtonToggleGroupMultiple {
+ value: ('' | number | null | undefined | boolean)[] = [0];
+ @ViewChildren(MatButtonToggle) toggles: QueryList;
+}
+
@Component({
template: `
Yes
diff --git a/src/lib/button-toggle/button-toggle.ts b/src/lib/button-toggle/button-toggle.ts
index f9f68b0d2d74..db15195cb4e7 100644
--- a/src/lib/button-toggle/button-toggle.ts
+++ b/src/lib/button-toggle/button-toggle.ts
@@ -264,7 +264,7 @@ export class MatButtonToggleGroup extends _MatButtonToggleGroupMixinBase impleme
}
if (this.multiple && Array.isArray(this._rawValue)) {
- return !!this._rawValue.find(value => toggle.value != null && value === toggle.value);
+ return this._rawValue.some(value => toggle.value != null && value === toggle.value);
}
return toggle.value === this._rawValue;