рдЖрдЗрдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд╛рд░реНрдХрд┐рдХ рд╕рдореВрд╣ рд╕реЗ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ
рдХреЛрдгреАрдп рдШрдЯрдХ рдмрдирд╛рдПрдВред рдШрдЯрдХ рдХреЛ рдкреБрди: рдЙрдкрдпреЛрдЧ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИред рд╕рдВрдкрд╛рджрди рдХрд░рддреЗ рд╕рдордп, рд╕рднреА рдлрд╝реАрд▓реНрдб рд╡рд╛рд▓рд╛ рдПрдХ рдлреЙрд░реНрдо рдЖрдорддреМрд░ рдкрд░ рдЦреБрд▓рддрд╛ рд╣реИред рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА
"рдПрдбрд┐рдорди", "рдирд┐рд░реНрджреЗрд╢рдХ", "рдкреНрд░реЛрдлреЗрд╕рд░", "рдЫрд╛рддреНрд░" рдХреА рд╕реВрдЪреА рд╕реЗ рдПрдХ рдпрд╛ рдХрдИ рднреВрдорд┐рдХрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ
редрдХрдИ рдкреНрд░рдХрд╛рд░ рдХреА рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдо рдПрдХ рдЪреЗрдХрдмреЙрдХреНрд╕ рдкрд░ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднреВрдорд┐рдХрд╛рдУрдВ рдХреА рдЬрд╛рдБрдЪ рдпрд╛ рдЕрдирдЪреЗрдХ рдХрд░рдиреЗ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдореВрд▓ рдШрдЯрдХ рдмрдирд╛рддреЗ рд╣реИрдВ (рдЕрд░реНрдерд╛рдд, рдкреНрд░рдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреГрд╖реНрда) рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░рд╛
рдЪреЗрдХрдмреЙрдХреНрд╕-рд╕рдореВрд╣ рдШрдЯрдХ рд╣реЛрдЧрд╛ред
export class AppComponent implements OnInit , , , ]; public userModel = ; constructor() ngOnInit(): void }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рднреВрдорд┐рдХрд╛рдУрдВ рдХрд╛ рдПрдХ рд╣рд╛рд░реНрдбрдХреЛрдб рдмрдирд╛рдпрд╛, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рднреВрдорд┐рдХрд╛рдУрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдорд╛рд░реЗ HTTP рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдереЛрдбрд╝реА рджреЗрд░реА рдХреЗ рд╕рд╛рде рдЙрд╕реА рдорд╛рди рдХреЛ рджреВрд╕рд░реЗ рдЪрд░ рдкрд░ рд╕реМрдВрдкрд╛ред
//app.component.ts userRolesOptions = new Array<any>(); ngOnInit(): void { setTimeout(() => { this.userRolesOptions = this.userRoles; }, 1000); // 1 }
рдЕрдм рдЖрдЗрдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдЪреЗрдХрдмреЙрдХреНрд╕-рд╕рдореВрд╣ рдШрдЯрдХ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЬрд┐рд╕реЗ рдЪреЗрдХрдмреЙрдХреНрд╕ рд╕реЗ рд╕рдореВрд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ
рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдРрд╕реЗ рд╡рд░реНрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ CheckboxItem.ts
export class CheckboxItem { value: string; label: string; checked: boolean; constructor(value: any, label: any, checked?: boolean) { this.value = value; this.label = label; this.checked = checked ? checked : false; } }
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ CheckboxComponent рджреНрд╡рд╛рд░рд╛ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ рднреВрдорд┐рдХрд╛рдПрдБ рд╣реИрдВ) рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдФрд░ рд░рд╛рдЬреНрдп рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рд╡рд┐рдХрд▓реНрдк рдЪрдпрдирд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВ)ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ "рдЪреЗрдХ рдХреА рдЧрдИ" рд╕рдВрдкрддреНрддрд┐ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ рдФрд░ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реЛрдЧреА, рдЕрд░реНрдерд╛рдд рд╕рднреА рдорд╛рди рдкрд╣рд▓реЗ рдирд╣реАрдВ рдЪреБрдиреЗ рдЬрд╛рдПрдВрдЧреЗред рдпрд╣ рддрдм рдЙрдкрдпреБрдХреНрдд рд╣реИ рдЬрдм рд╣рдо рдПрдХ рдПрдХрд▓ рднреВрдорд┐рдХрд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рддреЗ рд╣реИрдВред
рдЕрдЧрд▓рд╛, рд╣рдо рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рд╕рд┐рдореБрд▓реЗрд╢рди рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдз рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВрдЧреЗ, рддрд╛рдХрд┐ рд╣рдо JSON рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рд╕рд░рдгреА рдХреЗ рдмреАрдЪ рдореИрдк рдХрд░ рд╕рдХреЗрдВ
userRolesOptions = new Array<CheckboxItem>(); ngOnInit(): void { setTimeout(() => { this.userRolesOptions = this.userRoles.map(x => new CheckboxItem(x.id, x.name)); }, 1000); }
рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЬреЗрдПрд╕рдПрди рд╕рдВрд░рдЪрдирд╛ рдХрд┐рд╕ рд╕рд░реНрд╡рд░ рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓реМрдЯрддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ HTML рдЪреЗрдХрдмреЙрдХреНрд╕ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рдореВрд▓реНрдп рдФрд░ рдПрдХ рд╡рд┐рд╡рд░рдг рд╣реЛрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо "рд▓реЗрдмрд▓" рдХреЗ рд╕рд╛рде "рдореВрд▓реНрдп" рдФрд░ "рдирд╛рдо" рдХреЗ рд╕рд╛рде "рдЖрдИрдбреА" рдореИрдкрд┐рдВрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдореВрд▓реНрдп рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдХреБрдВрдЬреА рдпрд╛ рдЖрдИрдбреА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░
рд▓реЗрдмрд▓ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╡рд░рдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрдврд╝рддрд╛ рд╣реИред
рдЕрдЧрд▓рд╛ рдХрджрдо рдПрдХ рдЪреЗрдХрдмреЙрдХреНрд╕рдЧреНрд░реБрдк.рдХреЙрдордкреЙрдЗрдВрдЯ рдмрдирд╛рдирд╛ рд╣реИред рд╡рд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
@Component({ selector: 'checkbox-group', templateUrl: './checkbox-group.component.html', styleUrls: ['./checkbox-group.component.css'] }) export class CheckboxGroupComponent implements OnInit { @Input() options = Array<CheckboxItem>(); constructor() { } ngOnInit() {} }
рдпрд╣ рдПрдХ рдХреЛрдгреАрдп рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд░реВрдкрд░реЗрдЦрд╛ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрд╛ред рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╡рд┐рдХрд▓реНрдк рдирд╛рдордХ
@ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдЙрди рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реВрдЪреА рд╣реЛрдЧреА рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЪрдпрдирд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рдЬрд┐рддрдиреЗ рднреА рдЪреЗрдХрдмреЙрдХреНрд╕ рд╣реИрдВ, рд╣рдорд╛рд░рд╛ HTML рдШрдЯрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛ред
рдпрд╣ CheckboxGroupComponent рдХреЗ рд▓рд┐рдП HTML рд╣реИ:
<div *ngFor=тАЭlet item of optionsтАЭ> <input type=тАЭcheckboxтАЭ [(ngModel)]=тАЭitem.checkedтАЭ>{{item.label}} </div>
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ
рд╡рд┐рдХрд▓реНрдк рд╕реВрдЪреА рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ
"рдЪреЗрдХ рдХрд┐рдП рдЧрдП" рдЖрдЗрдЯрдо рдЧреБрдг рдХреЛ рдмрд╛рдБрдзрдиреЗ рдХреЗ рд▓рд┐рдП ngModel рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред
рдЕрдВрддрд┐рдо рдХрджрдо рд╣рдорд╛рд░реЗ рдирдП рдмрдирд╛рдП рдЧрдП рдШрдЯрдХ рдХреЛ рдореВрд▓ AppComponent рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реИред
// somewhere in AppComponent html template <checkbox-group [options]=тАЭuserRolesOptionsтАЭ></checkbox-group>
рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрдпрдирд┐рдд рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рдИрд╡реЗрдВрдЯ рдмрдирд╛рдПрдВрдЧреЗ, рдЬреЛ рдХрд┐рд╕реА рдПрдХ рдЪреЗрдХрдмреЙрдХреНрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде, рдЪрдпрдирд┐рдд рд▓реЛрдЧреЛрдВ рдХреА рд╣рдорд╛рд░реА рд╕реВрдЪреА рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ: [1,2,4]
CheckboxGroupComponent рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ, рд╣рдо
рдкрд░рд┐рд╡рд░реНрддрди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
<div *ngFor=тАЭlet item of optionsтАЭ> <input type=тАЭcheckboxтАЭ [(ngModel)]=тАЭitem.checkedтАЭ (change)=тАЭonToggle()тАЭ>{{item.label}} </div>
рдпрд╣ рдмрд╣реБрдд рд╣реА рдХрд╛рд░реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ:
export class CheckboxGroupComponent implements OnInit { @Input() options = Array<CheckboxItem>(); @Output() toggle = new EventEmitter<any[]>(); constructor() {} ngOnInit(){} onToggle() { const checkedOptions = this.options.filter(x => x.checked); this.selectedValues = checkedOptions.map(x => x.value); this.toggle.emit(checkedOptions.map(x => x.value)); } }
рдЗрд╕ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ (AppComponent рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ
рдЯреЙрдЧрд▓ рдирд╛рдо рдХреЗ рд╕рд╛рде
рдЖрдЙрдЯрдкреБрдЯ рд╕рдВрдкрддреНрддрд┐)ред
<checkbox-group [options]=тАЭuserRolesOptionsтАЭ (toggle)=тАЭonRolesChange($event)тАЭ></checkbox-group>
рдФрд░ userModel рдореЗрдВ рд░рд┐рдЯрд░реНрди рд░рд┐рдЬрд▓реНрдЯ (рдЪрдпрдирд┐рдд рднреВрдорд┐рдХрд╛рдПрдБ) рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред
export class CheckboxGroupComponent implements OnInit { //.. onRolesChange(value) { this.userModel.roles = value; console.log('Model role:' , this.userModel.roles); } }
рдЕрдм рдЪреЗрдХрдмреЙрдХреНрд╕ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд┐рдХ рдкрд░ рдЖрдкрдХреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЪрдпрдирд┐рдд рднреВрдорд┐рдХрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ, рдЙрдирдХреА рдЖрдИрдбреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдореИрдВ
рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдФрд░
рдкреНрд░реЛрдлреЗрд╕рд░ рдХреА рднреВрдорд┐рдХрд╛рдПрдБ рдЪреБрдирддрд╛ рд╣реВрдБ, рддреЛ рдореБрдЭреЗ "рдЖрджрд░реНрд╢ рднреВрдорд┐рдХрд╛рдПрдБ: (2) [1, 3]" рдорд┐рд▓рддреА рд╣реИрдВред
рдШрдЯрдХ рд▓рдЧрднрдЧ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдЕрдВрддрд┐рдо рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЪреЗрдХрдмреЙрдХреНрд╕ рд╕рдореВрд╣ рдЖрд░рдВрднреАрдХрд░рдг рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ рдЬрдм рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрдкрд╛рджрди рдХрд░реЗрдВрдЧреЗред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднреВрдорд┐рдХрд╛рдУрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ CheckboxGroupComponent рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред
рдкрд╣рд▓рд╛ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ I рд╡рд░реНрдЧ рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ "рдЪреЗрдХ" рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЬрд┐рд╕ рдЬрдЧрд╣ рдкрд░ рд╣рдордиреЗ рдореИрдкрд┐рдВрдЧ рдХреА рдереАред
//AppComponent.ts setTimeout(() => { this.userRolesOptions = this.userRoles.map(x => new CheckboxItem(x.id, x.name, true)); }, 1000); //
рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрдпрдирд┐рддрд╡реИрд▓реНрдпреВрдЬрд╝ рдХреА рдПрдХ рдФрд░ рд╕реВрдЪреА рдЬреЛрдбрд╝реЗрдВред
<checkbox-group [options]=тАЭuserRolesOptionsтАЭ [selectedValues]=тАЭuserModel.rolesтАЭ (toggle)=тАЭonRolesChange($event)тАЭ></checkbox-group>
рдЖрдЗрдП рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рддреАрди рднреВрдорд┐рдХрд╛рдУрдВ рд╡рд╛рд▓рд╛ рдПрдХ рдореЙрдбрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЖрдпрд╛ рд╣реИред
//AppComponent.ts public userModel = { id: 1, name: 'Vlad', roles: [1,2,3] }; constructor() { } //rest of the code
рдЪреЗрдХрдмреЙрдХреНрд╕рдЧреНрд░реБрдк.рдХреЙрдордкреЙрдЗрдВрдЯ рдореЗрдВ, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЗ рд╕рднреА "рдЪреЗрдХ рдХрд┐рдП рдЧрдП" рдЧреБрдгреЛрдВ рдХреЛ рд╕рд╣реА рдХрд░рддреЗ рд╣реИрдВ рдпрджрд┐ рднреВрдорд┐рдХрд╛ рдЖрдИрдбреА
рдЪрдпрдирд┐рдд рд╕реВрдЪреА рдореЗрдВ рд╕рдореНтАНрдорд┐рд▓рд┐рдд рд╣реИред
//CheckboxGroupComponent.ts ngOnInit() { this.selectedValues.forEach(value => { const element = this.options.find(x => x.value === value); if (element) { element.checked = true; } }); }
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрдкрдХреЛ рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рдХреЛрдгреАрдп рд╕рд╛рдордЧреНрд░реА рд╕реЗ рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░, рдкреГрд╖реНрда рдкрд░ рд╕рднреА рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЛ рдЦреАрдВрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реЗрдХрдВрдб рдХреА рджреЗрд░реА рд╣реЛрдЧреАред рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд▓реЛрдб рд╣реЛрдиреЗ рд╡рд╛рд▓реА рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд╕рдордп рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЖрдк рдШрдЯрдирд╛ (рдЯреЙрдЧрд▓) рдХреА рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рднреА рдЪрдпрдирд┐рдд рднреВрдорд┐рдХрд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛
рдореВрд▓ рдШрдЯрдХ рдореЗрдВ рд╕реНрдерд┐рдд
userRolesOptions рд╕реВрдЪреА рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ "рдЪреЗрдХ рдХреА рдЧрдИ" рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реВрдЪреА рдХрд╛ рд▓рд┐рдВрдХ @Input (рдмрд╛рдЗрдВрдбрд┐рдВрдЧ) рд╕реЗ рд╣реЛрдХрд░ рдЧреБрдЬрд░рд╛ рд╣реИ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рднреАрддрд░ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред
const checkedOptions = this.userRolesOptions.filter(x => x.checked);
рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдШрдЯрдХ рдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдмрд╣реБ-рдЪрдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп рдШрдЯрдХ рдмрдирд╛рдиреЗ рдХрд╛ рдЖрдирдВрдж рд▓рд┐рдпрд╛ред
рдкреБрдирд╢реНрдЪ: рдпрджрд┐ рд▓реЗрдЦ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛрдЧрд╛, рддреЛ рдореИрдВ рджреВрд╕рд░реЗ рдЫреЛрдЯреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реВрдВрдЧрд╛, рдЬрд╣рд╛рдВ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рдХреЛрдгреАрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд░реВрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред