рдХреЛрдгреАрдп рдореЗрдВ рдмрдбрд╝реА рд╕реВрдЪреА рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ 3 рддрд░реАрдХреЗ

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

рдпрд╣ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд╣рд╛рдВ "рд░реВрдкрд░реЗрдЦрд╛ рддреЗрдЬ рд╣реИ рдФрд░ рдХреЛрдб рдзреАрдорд╛ рд╣реИред" рдХрдИ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рд╡реЗрдм рдкреЗрдЬ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдП рдмрд┐рдирд╛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ, рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдЬ рд╣рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡реЗрдм рдкреГрд╖реНрдареЛрдВ рдкрд░ рдмрдбрд╝реА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рддрд░реАрдХреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдЖрд╡реЗрджрди рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред







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

  • рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ (рдХреЛрдгреАрдп рд╕реАрдбреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред
  • рдореИрдиреБрдЕрд▓ рдкреНрд░рддрд┐рдкрд╛рджрдиред
  • рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рддрд┐рдкрд╛рджрдиред

рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ


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

рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреЗ рдкреАрдЫреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдиреАрдЪреЗ рдХреА рд░реЗрдЦрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрдВрдЯреЗрдирд░ рдФрд░ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред рдПрдХ рддрддреНрд╡ рдХреЗрд╡рд▓ рддрдм рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╡рд╣ рдХрдВрдЯреЗрдирд░ рдХреЗ рджреГрд╢реНрдп рдХреНрд╖реЗрддреНрд░ рдХреЗ рднреАрддрд░ рд╣реЛред

рд╣рдо scrollingрдПрдВрдЧреБрд▓рд░ рд╕реАрдбреАрдХреЗ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ , рдЬрд┐рд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ CDK рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

npm i @angular/cdk

рдлрд┐рд░ рдЖрдкрдХреЛ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

import { ScrollingModule } from '@angular/cdk/scrolling';
@NgModule({
 ...
 imports: [ ScrollingModule, ...]
})
export class AppModule {}

рдЙрд╕рдХреЗ рдмрд╛рдж, рдЙрди рдШрдЯрдХреЛрдВ рдореЗрдВ рдЬрд┐рдирдХрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ cdk-virtual-scroll-viewport:

<cdk-virtual-scroll-viewport itemSize="50">
 <div *cdkVirtualFor="let item of items">
   {{ item }}
 </div>
</cdk-virtual-scroll-viewport>

рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ рдЬреЛ рдЖрднрд╛рд╕реА рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдорд╛рдирдХ рдХреЛрдгреАрдп рддрдВрддреНрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрдард┐рдирд╛рдИ рдХреЗ, рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдШрдЯрдХ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрдИ рд╣рдЬрд╛рд░реЛрдВ рддрддреНрд╡реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред

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

  • , , . , . , Autocomplete ( ). , , , , . тАФ .
  • тАФ , .
  • рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рд╕реВрдЪреА рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рдкрд╣реБрдВрдЪ рдФрд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдЫрд┐рдкреЗ рд╣реБрдП рддрддреНрд╡ рд░реЗрдВрдбрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ - рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡реЗ рд╕реНрдХреНрд░реАрди рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдФрд░ рд╡реЗ рдорд╛рдирдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рддрдВрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреЗрдЬ рдкрд░ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЖрджрд░реНрд╢ рд╣реИ (рдмрд╢рд░реНрддреЗ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗ):

  • рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрджрд┐ рдЖрдк рдЙрди рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рдирдХрд╛ рдЖрдХрд╛рд░ рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдЬреЛ рд╡рд┐рд╢рд╛рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ (рдПрдХ рдореЛрдЯреЗ рдЕрдиреБрдорд╛рди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕реВрдЪрд┐рдпрд╛рдБ рдЬрд┐рдирдореЗрдВ 5 рд╣рдЬрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ)ред
  • рдЗрд╕ рдШрдЯрдирд╛ рдореЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдЕрдВрддрд╣реАрди рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореИрдиреБрдЕрд▓ рдкреНрд░рддрд┐рдкрд╛рджрди


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

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд░рд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИ рдЬреЛ * рдирд┐рд░реНрджреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдпреЛрдЬрд┐рдд рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИngFor

<tr 
*ngFor="let item of data; trackBy: trackById; let isEven = even; let isOdd = odd"
    class="h-12"
    [class.bg-gray-400]="isEven"
    [class.bg-gray-500]="isOdd"
>
  <td>
    <span class="py-2 px-4">{{ item.id }}</span>
  </td>

  <td>
    <span>{{ item.label }}</span>
  </td>

  <td>
    <a>
      <button class="py-2 px-4 rounded (click)="remove(item)">x</button>
    </a>
  </td>
</tr>

10,000 рд╕рд░рд▓ рддрддреНрд╡реЛрдВ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ js- рдЪреМрдЦрдЯреЗ-рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдПрдХ рд╕реВрдЪреА рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХреА, рдЬреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдорд┐рдд рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ *ngForред рдирддреАрдЬрддрди, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреЛрдб (рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ) рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ 1099 рдПрдордПрд╕ рд▓рд┐рдпрд╛ рдЧрдпрд╛, рдкреНрд░рддрд┐рдкрд╛рджрди (рдкреНрд░рддрд┐рдкрд╛рджрди) рдореЗрдВ 1553 рдПрдордПрд╕ рд▓рд┐рдпрд╛ рдЧрдпрд╛, рдФрд░ рдбреНрд░рд╛рдЗрдВрдЧ (рдкреЗрдВрдЯрд┐рдВрдЧ) - 3 рдПрдордПрд╕ред


рдПрдХ рд╕реВрдЪреА рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдПрдХ рдЕрдзреНрдпрдпрди, рдЬреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП * рдПрдирдЬреАрдПрдлреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╕реВрдЪреА

рдЖрдЗрдЯрдо рдХреЛ рдХреЛрдгреАрдп рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

<tbody>
  <ng-container #itemsContainer></ng-container>
</tbody>
<ng-template #item let-item="item" let-isEven="isEven">
  <tr class="h-12 "
      [class.bg-gray-400]="isEven"
      [class.bg-gray-500]="!isEven"
  >
    <td>
      <span class="py-2 px-4">{{ item.id }}</span>
    </td>

    <td>
      <span>{{ item.label }}</span>
    </td>

    <td>
      <a>
        <button class="py-2 px-4 rounded" (click)="remove(item)">x</button>
      </a>
    </td>
  </tr>
</ng-template>

рдЪрд▓рд┐рдП рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛрдб рдХреИрд╕реЗ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред

рд╣рдордиреЗ рдПрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ рдХрдВрдЯреЗрдирд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛:

@ViewChild('itemsContainer', { read: ViewContainerRef }) container: ViewContainerRef;
@ViewChild('item', { read: TemplateRef }) template: TemplateRef<any>;

рдбреЗрдЯрд╛ рдЬрдирд░реЗрдЯ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдЙрдиреНрд╣реЗрдВ createEmbeddedViewрдЗрдХрд╛рдИ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реЗрдВрдбрд░ рдХрд░рддреЗ рд╣реИрдВ ViewContainerRef:

private buildData(length: number) {
  const start = this.data.length;
  const end = start + length;

  for (let n = start; n <= end; n++) {
    this.container.createEmbeddedView(this.template, {
      item: {
        id: n,
        label: Math.random()
      },
      isEven: n % 2 === 0
    });
  }
}

рдирддреАрдЬрддрди, рд╕реВрдЪреА рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрдХреЗрддрдХ рдереЛрдбрд╝рд╛ рд╕реБрдзрд╛рд░ рд╣реБрдП рдереЗред рдЕрд░реНрдерд╛рддреН, рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 734 рдПрдордПрд╕ рд▓рд┐рдпрд╛, рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 1443 рдПрдордПрд╕, рдбреНрд░реЙ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 2 рдПрдордПрд╕ред




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

рдпрд╣рд╛рдВ рдпрд╣ рджрд┐рдЦрддрд╛ рд╣реИ рдХрд┐ (рдорд╛рдЙрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд▓реЛрдбрд┐рдВрдЧ рдЗрдВрдбрд┐рдХреЗрдЯрд░ рдХреА рдирдХрд▓ рдХрд░рддреЗ рд╣реБрдП) рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред


рд╕реВрдЪреА рдзреАрдорд╛ рдХрд░рдирд╛

, рдореИрдиреНрдпреБрдЕрд▓ рд╕реВрдЪреА рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рд░реЗрдВрдбрд░рд┐рдВрдЧ рддрдХрдиреАрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред

рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рддрд┐рдкрд╛рджрди


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

рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рд╕реВрдЪреА рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рдмрд╣реБрдд рд╕реАрдзрд╛ рд╣реИ:

  • рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП setInterval, рд╣рдо рдПрдХ рдирд┐рдпрдорд┐рдд, рдкреНрд░рддреНрдпреЗрдХ 10 рдПрдордПрд╕ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ рдЬреЛ 500 рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ рдЬрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЬрд┐рд╕реЗ рд╣рдо рд╡рд░реНрддрдорд╛рди рддрддреНрд╡ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдирд┐рдпрдорд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ рдФрд░ рдЪрдХреНрд░ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

private buildData(length: number) {
  const ITEMS_RENDERED_AT_ONCE = 500;
  const INTERVAL_IN_MS = 10;

  let currentIndex = 0;

  const interval = setInterval(() => {
    const nextIndex = currentIndex + ITEMS_RENDERED_AT_ONCE;

    for (let n = currentIndex; n <= nextIndex ; n++) {
      if (n >= length) {
        clearInterval(interval);
        break;
      }
      const context = {
        item: {
          id: n,
          label: Math.random()
        },
        isEven: n % 2 === 0
      };
      this.container.createEmbeddedView(this.template, context);
    }

    currentIndex += ITEMS_RENDERED_AT_ONCE;
  }, INTERVAL_IN_MS);

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкреНрд░рддрд┐ рдХреЙрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ setInterval, рд╕рд╛рде рд╣реА рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХреА рдЖрд╡реГрддреНрддрд┐, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╕реВрдЪреА рдХреЗ рддрддреНрд╡ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИрдВ, рддреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ 500 рдРрд╕реЗ рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд░реВрдк рд╕реЗ рдзреАрдорд╛ рд╣реЛрдЧрд╛ред

рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рдкрдиреЗ рд╕реЗ, рдореБрдЭреЗ рдРрд╕реЗ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗ рдЬреЛ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рднреА рдмрджрддрд░ рджрд┐рдЦрддреЗ рд╣реИрдВред рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди - 907 рдПрдордПрд╕ред, рдкреНрд░рддрд┐рдкрд╛рджрди - 2555 рдПрдордПрд╕ред, рдбреНрд░рд╛рдЗрдВрдЧ - 16 рдПрдордПрд╕ред


рдПрдХ рд╕реВрдЪреА рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рд╢реЛрдз рдХрд░рдирд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрдЦрдж рдЕрдиреБрднрд╡ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реВрдЪреА рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдордп рдмрдврд╝ рдЧрдпрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕реЗ рдиреЛрдЯрд┐рд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╣рдо, рдПрдХ рдмрд╛рд░ рдореЗрдВ, 500 рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдВрдЯреЗрдирд░ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдмрд╛рд╣рд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдХрд┐ рдХрдВрдЯреЗрдирд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЖрдХрд╛рд░ рдмрджрд▓рддрд╛ рд╣реИ, рдпрд╛ рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓рддреА рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред


рд╕реВрдЪреА рддреЗрдЬ рд╣реИ

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


рдмрдбрд╝реА рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореИрдиреБрдЕрд▓ рдФрд░ рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рд░реЗрдВрдбрд░рд┐рдВрдЧ рддрдХрдиреАрдХ рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИрдВред рдореИрдВрдиреЗ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╣рд╛рдВ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдореЗрд░реЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рдереАред

рдЙрдкрд░реЛрдХреНрдд рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдХреНрд╕рд░ рдПрдХ рдЕрдЪреНрдЫреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдЬреИрд╕реЗ рдХрд┐ рдХреЛрдгреАрдп рд╕реАрдбреАрдХреЗ, рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрдорд┐рдд рдЖрднрд╛рд╕реА рд╕реНрдХреНрд░реЙрд▓, рдмрдбрд╝реА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВред

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдЖрдк рдЕрдкрдиреА рд╡реЗрдм рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдмрдбрд╝реА рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ?


All Articles