Angular 带按钮切换多个的 FormControl
Angular FormControl with Button Toggle Multiple
我有以下对象
currentApplication = {
'Initial': [12, 2, true, true, false],
'Reminder1': [8, 2, true, true, false],
'Reminder2': [4, 2, true, true, false],
'Reminder3': [2, 2, true, true, false]
}
数组的第 3、4 和 5 个值代表我想要的一些切换按钮的值,如下所示。
在我的组件中我有:
this.mySettingsForm = new FormGroup({
audienceLearner: new FormControl(applicationSettings.Initial[2]),
audienceLineManager: new FormControl(applicationSettings.Initial[3]),
audienceClientAdmin: new FormControl(applicationSettings.Initial[4])
})
在我的 HTML 我有
<form [formGroup]="mySettingsForm" autocomplete="off">
<mat-button-toggle-group name="audience" aria-label="audience" multiple="true" >
<mat-button-toggle [value]="applicationSettings.Initial[2]">Learner</mat-button-toggle>
<mat-button-toggle value="manager">Line Manager</mat-button-toggle>
<mat-button-toggle value="clientAdmin">Client Admin</mat-button-toggle>
</mat-button-toggle-group>
</form>
我希望因为 applicationSettings.Initial[2]
中的值是真的,所以按钮会显示为预选状态,但事实并非如此。如果我在按钮上使用 formControlName="audienceLearner",我会收到错误消息:No value accessor for form control with name: 'audienceLearner'
所以我需要让按钮显示为预选状态,并且我需要在单击按钮时更新值。
通过使用 [value]="applicationSettings.Initial[2]"
,您将按下按钮时传递的值设置为 true
,而不是传递“学习者”。 (我假设这是意图,因为其他两个按钮的值与其按钮文本匹配)
对于 mat-button-toggle-group
,如果您给它 value
属性 等于 mat-toggle-button
值之一,那么具有该值的按钮将显示为已按下。例如,这将使第一个按钮默认按下:
<mat-button-toggle-group name="audience" aria-label="audience" multiple="true" value="learner" >
<mat-button-toggle value="learner">Learner</mat-button-toggle>
<mat-button-toggle value="manager">Line Manager</mat-button-toggle>
<mat-button-toggle value="clientAdmin">Client Admin</mat-button-toggle>
</mat-button-toggle-group>
当使用 multiple="true"
时,值存储为数组。按下所有三个按钮将导致 ["learner", "manager", "clientAdmin"]
。您将需要一些函数来根据对象中的布尔值创建一个字符串数组,然后将该数组应用于值 属性.
我有以下对象
currentApplication = {
'Initial': [12, 2, true, true, false],
'Reminder1': [8, 2, true, true, false],
'Reminder2': [4, 2, true, true, false],
'Reminder3': [2, 2, true, true, false]
}
数组的第 3、4 和 5 个值代表我想要的一些切换按钮的值,如下所示。
在我的组件中我有:
this.mySettingsForm = new FormGroup({
audienceLearner: new FormControl(applicationSettings.Initial[2]),
audienceLineManager: new FormControl(applicationSettings.Initial[3]),
audienceClientAdmin: new FormControl(applicationSettings.Initial[4])
})
在我的 HTML 我有
<form [formGroup]="mySettingsForm" autocomplete="off">
<mat-button-toggle-group name="audience" aria-label="audience" multiple="true" >
<mat-button-toggle [value]="applicationSettings.Initial[2]">Learner</mat-button-toggle>
<mat-button-toggle value="manager">Line Manager</mat-button-toggle>
<mat-button-toggle value="clientAdmin">Client Admin</mat-button-toggle>
</mat-button-toggle-group>
</form>
我希望因为 applicationSettings.Initial[2]
中的值是真的,所以按钮会显示为预选状态,但事实并非如此。如果我在按钮上使用 formControlName="audienceLearner",我会收到错误消息:No value accessor for form control with name: 'audienceLearner'
所以我需要让按钮显示为预选状态,并且我需要在单击按钮时更新值。
通过使用 [value]="applicationSettings.Initial[2]"
,您将按下按钮时传递的值设置为 true
,而不是传递“学习者”。 (我假设这是意图,因为其他两个按钮的值与其按钮文本匹配)
对于 mat-button-toggle-group
,如果您给它 value
属性 等于 mat-toggle-button
值之一,那么具有该值的按钮将显示为已按下。例如,这将使第一个按钮默认按下:
<mat-button-toggle-group name="audience" aria-label="audience" multiple="true" value="learner" >
<mat-button-toggle value="learner">Learner</mat-button-toggle>
<mat-button-toggle value="manager">Line Manager</mat-button-toggle>
<mat-button-toggle value="clientAdmin">Client Admin</mat-button-toggle>
</mat-button-toggle-group>
当使用 multiple="true"
时,值存储为数组。按下所有三个按钮将导致 ["learner", "manager", "clientAdmin"]
。您将需要一些函数来根据对象中的布尔值创建一个字符串数组,然后将该数组应用于值 属性.