Barista: Combobox: рдирдпрд╛ рдШрдЯрдХ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдорд╛рд░реНрдЪ 2020  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dynatrace-oss/barista

рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз

рд╕рд╛рд░рд╛рдВрд╢

рд▓рд╛рдпрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдХ combobox рдШрдЯрдХ рдЬреЛрдбрд╝реЗрдВред

рдлрд╝реАрдЪрд░ рд╡рд┐рд╡рд░рдг

рд╣рдо рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░рд╛ dt-select рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдПрдХ рдмрдбрд╝реЗ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдбреАрдЯреА-рдЪрдпрди рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореВрд▓ рдЪрдпрди рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗрд╡рд▓ рдЙрд╕ рд╡рд┐рдХрд▓реНрдк рдкрд░ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рджрдмрд╛рдП рдЧрдП рдХреБрдВрдЬреА рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реАрдорд┐рдд рд╣реИред
рдПрдХ рдХреЙрдореНрдмреЛрдХреНрд╕ рдШрдЯрдХ рдЬреЛ рдПрдХ рдбреАрдЯреА-рд╕реНрд╡рдд: рдкреВрд░реНрдг рд╕рдВрд▓рдЧреНрди рдХреЗ рд╕рд╛рде рдПрдХ рдЗрдирдкреБрдЯ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд╣рд╛рдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЗрдирдкреБрдЯ рдХреЛ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рдЯреЗрдХреНрд╕реНрдЯ рджрд┐рдЦрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред
Combobox

рдХрдореНрдмреЛрдмреЙрдХреНрд╕ рдХреЛ рдбреАрдЯреА-рдЪрдпрди рдХреЗ рд╕рдорд╛рди рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡реНрдпрд╡рд╣рд╛рд░

рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рдбреНрд░реЙрдкрдбрд╛рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдорджреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рдХрд░реНрд╕рд░ рдХреЛ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдВрдмреЛрдмреЙрдХреНрд╕ рдЯрд╛рдЗрдк рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рд╡рд┐рд╡рд╛рджрд┐рдд рдШрдЯрдирд╛ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрдирдкреБрдЯ рдХреЗ рдЕрдВрджрд░ рдПрдХ рд▓реЛрдбрд┐рдВрдЧ рд╕рдВрдХреЗрддрдХ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлрд╝рд┐рд▓реНрдЯрд░-рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╣реИред

рдПрдХ рдмрд╛рд░ рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдбреНрд░реЙрдкрдбрд╛рдЙрди рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХреЛ рддрджрдиреБрд╕рд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Combobox on click

рдХрдореНрдмреЛрдмреЙрдХреНрд╕ рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВред рд╣рдо рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдЖрдЗрдЯрдореНрд╕ рдХреА рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреА рдЬрд╛рдПрдЧреАред рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд┐рдП рдЧрдП рдЖрдЗрдЯрдо рдХреЛ рд░реЗрдВрдбрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреА рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВ рдбреАрдЯреА-рд╕реНрд╡рдд: рдкреВрд░реНрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдбреЗрдЯрд╛рд▓рд┐рд╕реНрдЯ рдХреЗ рд╕рд╛рде рд╕рд░рд▓реАрдХреГрдд рдбреНрд░реЙрдкрдбрд╛рдЙрди рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

  • [ ] рдПрдкреАрдЖрдИ рдкреНрд░рд╕реНрддрд╛рд╡ рд▓рд┐рдЦреЗрдВ
  • [ ] рд▓рд┐рдм рдФрд░ рдбреЗрдореЛ рдмрдирд╛рдПрдВ
  • [] dtInput рдХреЗ рдЕрдВрджрд░ рдХреИрд░реЗрдЯ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдбреНрд░реЙрдкрдбрд╛рдЙрди рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдЯрд╛рдЗрд▓ рдмрдирд╛рдПрдВред
  • [ ] рд╡рд┐рд╡рд╛рджрд┐рдд рдЗрдирдкреБрдЯ рдЗрд╡реЗрдВрдЯ + рд▓реЛрдбрд┐рдВрдЧ рдЗрдВрдбрд┐рдХреЗрдЯрд░ рдЬреЛрдбрд╝реЗрдВ
  • [ ] рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝реЗрдВ
  • [ ] e2e рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝реЗрдВ

рд╕рдВрд▓рдЧреНрдирдХ

P2 feature help wanted new component

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рджреЛ рдФрд░ рдЗрдирдкреБрдЯ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ:
| рдирд╛рдо | рдкреНрд░рдХрд╛рд░ | рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди | рд╡рд┐рд╡рд░рдг |
| --- | --- | --- | --- |
| рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ | boolean | false | рдЬрдм рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЛрдбрд┐рдВрдЧ рд╕рдВрдХреЗрддрдХ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд▓реЛрдб/рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ |
| рдбрд┐рд╕реНрдкреНрд▓реЗрд╡рд┐рде | (value: T) => string | (value: T) => ${value}`` | рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдирд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрдореНрдмреЛрдмреЙрдХреНрд╕ рд╕реЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ |

рдбрд┐рд╕реНрдкреНрд▓реЗрд╡рд┐рде рдлрд╝рдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрдореНрдмреЛрдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдФрд░ рдПрдХ рд▓реЛрдбрд┐рдВрдЧ рдЗрдВрдбрд┐рдХреЗрдЯрд░ рдПрдХ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдЬрд░реВрд░реА рд▓рдЧрддрд╛ рд╣реИ - рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ - рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЛ рдСрдлрд╝рд▓реЛрдб рдХрд░ рджреЗрдЧрд╛ред

рд╕рднреА 8 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдПрдХреНрд╕реЗрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдХреГрдкрдпрд╛ рд╕реВрдЪреА рдмреЙрдХреНрд╕ рдкреЙрдкрдЕрдк рдХреЗ рд╕рд╛рде WAI-ARIA рдХреЙрдореНрдмреЛрдмреЙрдХреНрд╕ рд╕реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдЕрдиреБрд╢рдВрд╕рд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ

рдПрдкреАрдЖрдИ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрдореНрдмреЛрдмреЙрдХреНрд╕

рдЙрдиреНрдирдд рд╕рдВрд░рдЪрдирд╛

<dt-combobox [value]="initialValue" (valueChanges)="fn($event)" (filterChanges)="fn($event)" [placeholder]="'Type here for filter'">
   <dt-option *ngFor="let option of options">{{ option.value }} </dt-option>
</dt-combobox>

рдЗрдирдкреБрдЯ

| рдирд╛рдо | рдкреНрд░рдХрд╛рд░ | рд╡рд┐рд╡рд░рдг |
| ------------- | ------------- | ------------- |
| value | string \| undefined | рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп |
| placeholder | string \| undefined | рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ |

рдЖрдЙрдЯрдкреБрдЯ

| рдирд╛рдо | рдкреНрд░рдХрд╛рд░ | рд╡рд┐рд╡рд░рдг |
| ------------- | ------------- | ------------- |
| valueChanges | EventEmitter<string> | рдПрдХ рдирдпрд╛ рдорд╛рди рдЪреБрдиреЗ рдЬрд╛рдиреЗ рдкрд░ рдИрд╡реЗрдВрдЯ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрддрд╛ рд╣реИ |
| filterChanges | EventEmitter<string> | рдлрд╝рд┐рд▓реНрдЯрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛ |

рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХреНрд╖реЗрдкрдг
рдбреАрдЯреА-рд╡рд┐рдХрд▓реНрдк
рдбреАрдЯреА-рдСрдкреНрдЯрдЧреНрд░реБрдк

рдЬрд╛рдВрдЪ рд╕реВрдЪреА

  • [] рдЙрдЪрд┐рдд рдХреАрдмреЛрд░реНрдб рд╕рдорд░реНрдерди (рддреАрд░: рдКрдкрд░ рдиреАрдЪреЗ)
  • [ ] рд╡рд╛рдИ-рдПрд░рд┐рдпрд╛
  • [] ngForms рд╕рдВрдЧрддрддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ
  • [] рд╕рддреНрдпрд╛рдкрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ

рдЕрд░реЗ @ lukett89 , рдПрдкреАрдЖрдИ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рд╛рди рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ dt-select рдХреЗ рд╕рдорд╛рди рд╣реА рдЗрдирдкреБрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдореИрдВ рдЬреЛрдбрд╝реВрдВрдЧрд╛
| рдирд╛рдо | рдкреНрд░рдХрд╛рд░ | рд╡рд┐рд╡рд░рдг |
| ------------- | ------------- | ------------- |
| id | string | рдЪрдпрди рдХреЗ рд▓рд┐рдП рдЖрдИрдбреА |
| compareWith | (v1: T, v2: T) => boolean | рдЪрдпрдирд┐рдд рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд▓реНрдк рдорд╛рдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп |
| required | boolean | рдХреНрдпрд╛ рдЗрдирдкреБрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ |
| panelClass | string | рдХрдореНрдмреЛрдмреЙрдХреНрд╕ рдбреНрд░реЙрдкрдбрд╛рдЙрди рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╡рд░реНрдЧ |

рд╣рдореЗрдВ рдЦреБрд▓реЗ рд░рд╛рдЬреНрдп рдХреЗ рд▓рд┐рдП рдЧреЗрдЯрд░реНрд╕ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ "рдЦреЛрд▓рд╛" рдФрд░ рдЬрдм рд╡рд╣ рд░рд╛рдЬреНрдп рдмрджрд▓рддрд╛ рд╣реИ рддреЛ рдЖрдЙрдЯрдкреБрдЯред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдлрд╛рдпрджреЗрдордВрдж рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрдЯрддрдо рдПрдкреАрдЖрдИ рд╕реЗ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдкрдХреЗ рдЙрддреНрддрд░ @ ffriedl89 рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рд╣рдо рдШрдЯрдХ рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕рднреА рдЗрдирдкреБрдЯ/рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдВрдЧреЗред

рдЕрдВрддрд┐рдо рдПрдкреАрдЖрдИ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрдореНрдмреЛрдмреЙрдХреНрд╕

рдЙрдиреНрдирдд рд╕рдВрд░рдЪрдирд╛

<dt-combobox [value]="initialValue" (valueChanges)="fn($event)" (filterChanges)="fn($event)" [placeholder]="'Type here for filter'">
   <dt-option *ngFor="let option of options">{{ option.value }} </dt-option>
</dt-combobox>

рдЗрдирдкреБрдЯ

| рдирд╛рдо | рдкреНрд░рдХрд╛рд░ | рд╡рд┐рд╡рд░рдг |
| ------------- | ------------- | ------------- |
| value | string \| undefined | рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп |
| placeholder | string \| undefined | рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ |
| id | рд╕реНрдЯреНрд░рд┐рдВрдЧ | рдЪрдпрди рдХреЗ рд▓рд┐рдП рдЖрдИрдбреА |
| compareWith | (v1: T, v2: T) => boolean | рдЪрдпрдирд┐рдд рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд▓реНрдк рдорд╛рдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп |
| required | boolean | рдХреНрдпрд╛ рдЗрдирдкреБрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ |
| panelClass | string | рдХрдореНрдмреЛрдмреЙрдХреНрд╕ рдбреНрд░реЙрдкрдбрд╛рдЙрди рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╡рд░реНрдЧ |

рдЖрдЙрдЯрдкреБрдЯ

| рдирд╛рдо | рдкреНрд░рдХрд╛рд░ | рд╡рд┐рд╡рд░рдг |
| ------------- | ------------- | ------------- |
| valueChanges | EventEmitter<string> | рдПрдХ рдирдпрд╛ рдорд╛рди рдЪреБрдиреЗ рдЬрд╛рдиреЗ рдкрд░ рдИрд╡реЗрдВрдЯ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрддрд╛ рд╣реИ |
| filterChanges | EventEmitter<string> | рдлрд╝рд┐рд▓реНрдЯрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛ |
| openedChange | рдЗрд╡реЗрдВрдЯ рдПрдорд┐рдЯрд░| рдЬрдм рдЪрдпрдирд┐рдд рдкреИрдирд▓ рдХреЛ рдЯреЙрдЧрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ рддреЛ рдИрд╡реЗрдВрдЯ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрддрд╛ рд╣реИред |

рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХреНрд╖реЗрдкрдг
рдбреАрдЯреА-рд╡рд┐рдХрд▓реНрдк
рдбреАрдЯреА-рдСрдкреНрдЯрдЧреНрд░реБрдк

рдЬрд╛рдВрдЪ рд╕реВрдЪреА

  • [] рдЙрдЪрд┐рдд рдХреАрдмреЛрд░реНрдб рд╕рдорд░реНрдерди (рддреАрд░: рдКрдкрд░ рдиреАрдЪреЗ)
  • [ ] рд╡рд╛рдИ-рдПрд░рд┐рдпрд╛
  • [] ngForms рд╕рдВрдЧрддрддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ
  • [] рд╕рддреНрдпрд╛рдкрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ

рдореИрдВ рдЕрдЧрд▓реЗ 2 рд╕рдкреНрддрд╛рд╣ рдХреЗ рднреАрддрд░ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдпрд╣ рдореБрджреНрджрд╛ рд╕реМрдВрдк рд╕рдХрддреЗ рд╣реИрдВ?

рд╕рд┐рдВрдХ рдореЗрдВ рдФрд░ @heartdisease рдФрд░ @lukett89 рдХреЗ рд╕рд╛рде рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реМрдВрдк рджрд┐рдпрд╛ рд╣реИред

рдореИрдВ рджреЛ рдФрд░ рдЗрдирдкреБрдЯ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ:
| рдирд╛рдо | рдкреНрд░рдХрд╛рд░ | рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди | рд╡рд┐рд╡рд░рдг |
| --- | --- | --- | --- |
| рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ | boolean | false | рдЬрдм рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЛрдбрд┐рдВрдЧ рд╕рдВрдХреЗрддрдХ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд▓реЛрдб/рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ |
| рдбрд┐рд╕реНрдкреНрд▓реЗрд╡рд┐рде | (value: T) => string | (value: T) => ${value}`` | рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдирд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрдореНрдмреЛрдмреЙрдХреНрд╕ рд╕реЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ |

рдбрд┐рд╕реНрдкреНрд▓реЗрд╡рд┐рде рдлрд╝рдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрдореНрдмреЛрдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдФрд░ рдПрдХ рд▓реЛрдбрд┐рдВрдЧ рдЗрдВрдбрд┐рдХреЗрдЯрд░ рдПрдХ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдЬрд░реВрд░реА рд▓рдЧрддрд╛ рд╣реИ - рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ - рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЛ рдСрдлрд╝рд▓реЛрдб рдХрд░ рджреЗрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

areknow picture areknow  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bradking1329 picture bradking1329  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

TannerGilbert picture TannerGilbert  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

samuelfahrngruber picture samuelfahrngruber  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lukasholzer picture lukasholzer  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ