рдХреЛрдгреАрдп рдореЗрдВ рдЖрд▓рд╕реА рдШрдЯрдХ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ? рд╢рд╛рдпрдж рд╣рдо рдХреЛрдгреАрдп рд░рд╛рдЙрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдирд╣реАрдВ, рд╣рдо рдШрдЯрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреЛрдгреАрдп рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЗрд╡рд▓ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдЗрд╡реА рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдирдП рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЖрд▓рд╕реА рд▓реЛрдб рд╣рдо рдЕрдм рддрдХ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рдереЗ: рдорд╛рд░реНрдЧреЛрдВ
рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдПрдХ рдорд╣рд╛рди рддрдВрддреНрд░ рд╣реИред рдХреЛрдгреАрдп рдореЗрдВ, рдЖрдк рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рд░реНрдЧреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдХреЗ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдкреНрд░рдпрд╛рд╕ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдгреАрдп
рджрд╕реНрддрд╛рд╡реЗрдЬ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
const routes: Routes = [ { path: 'customer-list', loadChildren: () => import('./customers/customers.module').then(m => m.CustomersModule) } ];
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж,
customers.module
рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЯреБрдХрдбрд╝рд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рддрдм рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
customer-list
рдорд╛рд░реНрдЧ рдХреЗ рд╕рд╛рде рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдореБрдЦреНрдп рдмрдВрдбрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ рдЖрд╡реЗрджрди рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рд╡реНрдпрдХреНрддрд┐рдЧрдд рдШрдЯрдХреЛрдВ рдХреЗ рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЕрдм рддрдХ, рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛ рдкрд╛рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдЗрд╡реА рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдм рдмрджрд▓ рдЧрдпрд╛ред
рдЖрдЗрд╡реА рдФрд░ "рдЗрд▓рд╛рдХреЗ" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛
рдореЙрдбреНрдпреВрд▓ рд╣рд░ рдХреЛрдгреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдореВрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдирд┐рд░реНрдорд╛рдг рдЦрдВрдб рд╣реИрдВред рдореЙрдбреНрдпреВрд▓ рдШрдЯрдХ, рдирд┐рд░реНрджреЗрд╢, рдкрд╛рдЗрдк, рд╕реЗрд╡рд╛рдУрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВред
рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЖрдзреБрдирд┐рдХ рдХреЛрдгреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред рдЗрд╕рдХрд╛ рдПрдХ рдХрд╛рд░рдг рдпрд╣ рддрдереНрдп рд╣реИ рдХрд┐ ViewEngine рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рджреВрд╕рд░реА рдУрд░, рдЖрдЗрд╡реА рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓реЗрддрд╛ рд╣реИред рдЖрдЗрд╡реА рдореЗрдВ, рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдШрдЯрдХ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕реНрдерд╛рдиреАрдпрддрд╛ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рд╣реИред рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд╣реИред
рдЖрдЗрд╡реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрдиреНрди es2015 рдмрдВрдбрд▓ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдХреЗ рдЗрд╕реЗ рд╕рдордЭрд╛рддреЗ рд╣реИрдВред
Es2015- рдмрдВрдбрд▓ рдЖрдЗрд╡реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрдиреНрдиComponent code
рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ Ivy рдкреНрд░рдгрд╛рд▓реА рдиреЗ рдШрдЯрдХ рдХреЛрдб рдХреЛ рд╕рд╣реЗрдЬ рд▓рд┐рдпрд╛ рд╣реИред рдпрд╣рд╛рдВ рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдЗрд╡реА рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдкрд╣рд▓рд╛ рдЯреБрдХрдбрд╝рд╛ рдПрдХ
Component factory
рд░реВрдк рдореЗрдВ рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдШрдЯрдХ рдХреЛ рдХреИрд╕реЗ рддрддреНрдХрд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред
Component metadata
рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдЖрдЗрд╡реА рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд░рдЦрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐
type
рдФрд░
selectors
, рдЕрд░реНрдерд╛рдд, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдШрдЯрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЖрдЗрд╡реА рдпрд╣рд╛рдВ
template
рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╣
Compiled version of your template
рдЕрдиреБрднрд╛рдЧ рдХреЗ
Compiled version of your template
рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдЗрдП рд╣рдо рдЗрд╕ рджрд┐рд▓рдЪрд╕реНрдк рддрдереНрдп рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдВред
template
рдлрд╝рдВрдХреНрд╢рди рд╣рдорд╛рд░реЗ HTML рдХреЛрдб рдХрд╛ рд╕рдВрдХрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рд╡рд╣ рдбреЛрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЗрд╡реА рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЕрд▓рдЧ рд╣реИ рдХрд┐ ViewEngine рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
ViewEngine рд╕рд┐рд╕реНрдЯрдо рдХреЛрдб рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреЛрдгреАрдп рдХреЛрдб рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХрд░реЗрдЧрд╛ред
рдФрд░ рдЖрдЗрд╡реА рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдЬреЛ рдШрдЯрдХ рдХреЛрдгреАрдп рдХрдорд╛рдВрдб рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╕рдм рдХреБрдЫ рдХреЗ рдкреНрд░рднрд╛рд░реА рд╣реИред рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдШрдЯрдХреЛрдВ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдореМрдЬреВрдж рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЯреНрд░реА-рд╢реЗрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдХреЛрдгреАрдп рдЖрдзрд╛рд░ рдХреЛрдб рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЖрд▓рд╕реА рдШрдЯрдХ рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг
рдЕрдм рдЬрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрд▓рд╕реА рдШрдЯрдХ рд▓реЛрдб рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╕рдордЭреЗрдВред рдЕрд░реНрдерд╛рддреН, рд╣рдо рдПрдХ рдХреНрд╡рд┐рдЬрд╝ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВрдЧреЗ, рдЬреЛ рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдЧрд╛ред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢рд╣рд░ рдХреА рдПрдХ рдЫрд╡рд┐ рдФрд░ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЖрдкрдХреЛ рдЗрд╕ рд╢рд╣рд░ рдХрд╛ рдирд╛рдо рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдмрдЯрди рддреБрд░рдВрдд рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрддреНрддрд░ рд╕рд╣реА рдерд╛ рдпрд╛ рдЧрд▓рддред рдпрджрд┐ рдмрдЯрди рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рд╣рд░реЗ рд░рдВрдЧ рдХреА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЙрддреНрддрд░ рд╕рд╣реА рдерд╛ред рдпрджрд┐ рдкреГрд╖реНрдарднреВрдорд┐ рд▓рд╛рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЙрддреНрддрд░ рдЧрд▓рдд рдерд╛ред
рд╡рд░реНрддрдорд╛рди рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
рдХреНрд╡рд┐рдЬрд╝ рдбреЗрдореЛрдкреНрд░реЛрдЧреНрд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ
QuizCardComponent
рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛
QuizCardComponent
рд╣реИрдВред
рдЖрд▓рд╕реА рдШрдЯрдХ рд▓реЛрдбрд┐рдВрдЧ рдЕрд╡рдзрд╛рд░рдгрд╛
рдЖрдЗрдП рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ
QuizCardComponent
рдШрдЯрдХ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВред
QuizCardComponent рдШрдЯрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдХреНрд╡рд┐рдЬрд╝
Start quiz
рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдХреНрд╡рд┐рдЬрд╝ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдШрдЯрдХ рдХреЗ рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдШрдЯрдХ рд╣рдорд╛рд░реЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕реЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред
рд╣рдо рдПрдХ "рдЖрд▓рд╕реА" рдШрдЯрдХ рдХреА рдкреНрд░рд╢реНрдирд╛рдВрдХрд┐рдд рдШрдЯрдирд╛рдУрдВ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЙрд╕реА рддрд░рд╣ рд╣рдо рдПрдХ рдирд┐рдпрдорд┐рдд рдШрдЯрдХ рдХреА рдШрдЯрдирд╛рдУрдВ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдВрдЧреЗред рдЕрд░реНрдерд╛рддреН, рдШрдЯрдирд╛ рдХреА рдШрдЯрдирд╛ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕реНрдХреНрд░реАрди рдкрд░ рдЕрдЧрд▓реЗ рдХрд╛рд░реНрдб рдХреЛ рдкреНрд░рд╢реНрди рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдХрд┐рд╕реА рдШрдЯрдХ рдХреЗ рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо
QuizCardComponent
рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░рд╢реНрди рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдлрд┐рд░ рд╣рдо рдЗрд╕рдореЗрдВ рдПрдВрдЧреБрд▓рд░ рдордЯреЗрд░рд┐рдпрд▓ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдШрдЯрдХ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдо рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдШрдЯрдирд╛рдУрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВрдЧреЗред
рдЖрдЗрдП
QuizCardComponent
рдШрдЯрдХ рдХреЗ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрди рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИ:
<h1>Here's the question</h1> <ul> <li><b>Image: </b> {{ question.image }}</li> <li><b>Possible selections: </b> {{ question.possibleSelections.toString() }}</li> <li><b>Correct answer: </b> {{ question.correctAnswer }}</li> </ul>
рдкрд╣рд▓рд╛ рдХрджрдо рдПрдХ рдХрдВрдЯреЗрдирд░ рддрддреНрд╡ рдмрдирд╛рдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрд╛ рддреЛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ
<div>
, рдпрд╛ -
ng-container
рд╕рд╣рд╛рд░рд╛ рд▓реЗрдВ, рдЬреЛ рд╣рдореЗрдВ HTML- рдХреЛрдб рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрддрд░ рдХреЗ рдмрд┐рдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдХрдВрдЯреЗрдирд░ рддрддреНрд╡ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо "рдЖрд▓рд╕реА" рдШрдЯрдХ рдбрд╛рд▓рддреЗ рд╣реИрдВ:
<mat-toolbar color="primary"> <span>City quiz</span> </mat-toolbar> <button *ngIf="!quizStarted" mat-raised-button color="primary" class="start-quiz-button" (click)="startQuiz()">Start quiz</button> <ng-container #quizContainer class="quiz-card-container"></ng-container>
рдШрдЯрдХ рдореЗрдВ рдЖрдкрдХреЛ рдХрдВрдЯреЗрдирд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо
@ViewChild
рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо
ViewContainerRef
рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ
ViewContainerRef
ред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреЛрдгреАрдп 9 рдореЗрдВ,
@ViewChild
рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ
static
рд╕рдВрдкрддреНрддрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ
false
рд╕реЗрдЯ рд╣реИ:
@ViewChild('quizContainer', {read: ViewContainerRef}) quizContainer: ViewContainerRef;
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо "рдЖрд▓рд╕реА" рдШрдЯрдХ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ
ComponentFactoryResolver
рдФрд░
Injector
рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреА рдкрджреНрдзрддрд┐ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдХрд░ рджреЛрдиреЛрдВ рдХрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
ComponentFactoryResolver
рдирд┐рдХрд╛рдп рдПрдХ рд╕рд░рд▓ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╣реИ рдЬреЛ рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди
ComponentFactory
рдХрдХреНрд╖рд╛рдПрдВ рдЬреЛ рдШрдЯрдХреЛрдВ рдХреЛ рддреНрд╡рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ:
constructor(private quizservice: QuizService, private cfr: ComponentFactoryResolver, private injector: Injector) { }
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╣реИ рдЬреЛ рд▓рдХреНрд╖реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
startQuiz
рдкрджреНрдзрддрд┐ рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдШрдЯрдХ рдХреЗ рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
const {QuizCardComponent} = await import('./quiz-card/quiz-card.component'); const quizCardFactory = this.cfr.resolveComponentFactory(QuizCardComponent); const {instance} = this.quizContainer.createComponent(quizCardFactory, null, this.injector); instance.question = this.quizservice.getNextQuestion();
рд╣рдо
QuizCardComponent
рдХреА рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
import
ECMAScript рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЖрдпрд╛рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддреА рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рддреЛ
async/await
рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛
.then
рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ
.then
ред рд╡рд╛рджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдШрдЯрдХ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдкрд┐рдЫрдбрд╝реЗ рдЕрдиреБрдХреВрд▓рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рджрд┐рдиреЛрдВ, рдЖрдкрдХреЛ
ComponentFactory
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╕рдВрдмрдВрдзрд┐рдд рдкрдВрдХреНрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╕реАрдзреЗ рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред
ComponentFactory
рдХрд╛рд░рдЦрд╛рдирд╛ рд╣рдореЗрдВ
ComponentFactory
рд░реАрдл рджреЗрддрд╛ рд╣реИред рд╣рдо рдХрдВрдЯреЗрдирд░ рдХреЗ
createComponent
рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП
createComponent
рдФрд░
Injector
рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
createComponent
рд╡рд┐рдзрд┐
ComponentRef
рдЬрд╣рд╛рдБ рд╕рдореНтАНрдорд┐рд▓рд┐рдд рд╣реИ, рдШрдЯрдХ
ComponentRef
рджреЗрддрд╛ рд╣реИред рд╣рдо рдШрдЯрдХ
@Input
рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
instance
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ
@Input
ред
рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдпрд╣ рд╕рдм рд╕рдВрднрд╡рдд: рдХреЛрдгреАрдп
renderComponent
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рдЕрднреА рднреА рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рдХреЛрдгреАрдп рд╡рд┐рдзрд┐ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╕рд╣рд╛рдпрдХ рд╕рд╛рдордЧреНрд░реА
рдпрд╣рд╛рдВ рджреА рдЧрдИ рд╣реИ ред
рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдШрдЯрдХ рдХреЗ рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЖрд▓рд╕реА рдШрдЯрдХ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИStart quiz
рдмрдЯрди рджрдмрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдШрдЯрдХ рдХрд╛ рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдХрд╛
Network
рдЯреИрдм рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк
quiz-card-quiz-card-component.js
рдлрд╝рд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдП рдЧрдП рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдШрдЯрдХ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдкреНрд░рд╢реНрди рдХрд╛рд░реНрдб рджреЗрдЦрддрд╛ рд╣реИред
рдШрдЯрдХ рд╡рд┐рд╕реНрддрд╛рд░
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо
QuizCardComponent
рдШрдЯрдХ рд▓реЛрдб рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдЕрднреА рддрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдирд╣реАрдВ рд╣реИред
рдЖрдЗрдП рдЗрд╕реЗ рдХреЛрдгреАрдп рд╕рд╛рдордЧреНрд░реА рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдШрдЯрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВ:
<mat-card class="quiz-card"> <mat-card-header> <div mat-card-avatar class="quiz-header-image"></div> <mat-card-title>Which city is this?</mat-card-title> <mat-card-subtitle>Click on the correct answer below</mat-card-subtitle> </mat-card-header> <img class="image" mat-card-image [src]="'assets/' + question.image" alt="Photo of a Shiba Inu"> <mat-card-actions class="answer-section"> <button [disabled]="answeredCorrectly !== undefined" *ngFor="let selection of question.possibleSelections" mat-stroked-button color="primary" [ngClass]="{ 'correct': answeredCorrectly && selection === question.correctAnswer, 'wrong': answeredCorrectly === false && selection === question.correctAnswer }" (click)="answer(selection)"> {{selection}} </button> </mat-card-actions> </mat-card>
рд╣рдордиреЗ рдШрдЯрдХ рдореЗрдВ рдХреБрдЫ рд╕реБрдВрджрд░ рд╕рд╛рдордЧреНрд░реА рдШрдЯрдХреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИред рд╕рдВрдмрдВрдзрд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдЙрдиреНрд╣реЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ
AppModule
рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпреЗ рдореЙрдбреНрдпреВрд▓ "рд▓рд╛рд▓рдЪреА" рдореЛрдб рдореЗрдВ рд▓реЛрдб рд╣реЛрдВрдЧреЗред рдФрд░ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧреА, рдирд┐рдореНрди рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде:
ERROR in src/app/quiz-card/quiz-card.component.html:9:1 - error TS-998001: 'mat-card' is not a known element: 1. If 'mat-card' is an Angular component, then verify that it is part of this module. 2. If 'mat-card' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
рдХреНрдпрд╛ рдХрд░реЗрдВ? рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдордЭ рдЪреБрдХреЗ рд╣реИрдВ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рд╣реИред рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВрдЧреЗред рд╣рдо
QuizCardComponent
(
quizcard.component.ts
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ) рдХреЗ рд╕рдорд╛рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рдореЙрдбреНрдпреВрд▓
quizcard.component.ts
:
@NgModule({ declarations: [QuizCardComponent], imports: [CommonModule, MatCardModule, MatButtonModule] }) class QuizCardModule { }
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреЛрдИ
export
рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣реИ, рдЬреЛ рдЖрд▓рд╕реА рдореЛрдб рдореЗрдВ рд▓реЛрдб рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рдПрдХрдорд╛рддреНрд░ рдШрдЯрдХ
QuizCardComponent
рд╣реЛрдЧрд╛ред
import
рдЕрдиреБрднрд╛рдЧ рдХреЗрд╡рд▓ рдЙрди рдШрдЯрдХреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреА рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд╣рдо рдирдП рдореЙрдбреНрдпреВрд▓ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд▓рд╛рд▓рдЪреА рдореЛрдб рдореЗрдВ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдЗрд╕реЗ рдЖрдпрд╛рдд рди рдХрд░ рд╕рдХреЗрдВред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЬрдм рдЖрдк
Start quiz
рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХреИрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред
рд╕рдВрд╢реЛрдзрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдЕрджреНрднреБрдд!
QuizCardComponent
рдШрдЯрдХ
QuizCardComponent
рдЖрд▓рд╕реА рдореЛрдб рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░
ViewContainer
рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рднрд░реА рд╣реБрдИ рд╣реИрдВред
рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд npm рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП
webpack-bundle-analyze
рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдВрдбрд▓ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдЖрдкрдХреЛ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╡реЗрдмрдкреИрдХ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рдпреЛрдЬрдирд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред
рдЖрд╡реЗрджрди рдмрдВрдбрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдЖрд╡реЗрджрди рдХреЗ рдореБрдЦреНрдп рдмрдВрдбрд▓ рдХрд╛ рдЖрдХрд╛рд░ рд▓рдЧрднрдЧ 260 Kb рд╣реИред рдЕрдЧрд░ рд╣рдордиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде
QuizCardComponent
рдШрдЯрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХрд╛ рдЖрдХрд╛рд░ рд▓рдЧрднрдЧ 270 Kb рд╣реЛрдЧрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдо рдореБрдЦреНрдп рдмрдВрдбрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ 10 Kb рддрдХ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ, рдХреЗрд╡рд▓ рдПрдХ рдШрдЯрдХ рдХреЛ рдЖрд▓рд╕реА рдореЛрдб рдореЗрдВ рд▓реЛрдб рдХрд░ рд░рд╣реЗ рдереЗред рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо!
рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдмрд╛рдж
QuizCardComponent
рдХрд╛ рдХреЛрдб рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓
QuizCardComponent
рдХреЛрдб рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕ рдШрдЯрдХ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╕рд╛рдордЧреНрд░реА рдореЙрдбреНрдпреВрд▓ рднреА рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐
QuizCardComponent
MatButtonModule
рдФрд░
QuizCardComponent
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓
MatCardModule
рддреИрдпрд╛рд░ рдХреЛрдб
MatCardModule
ред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо
MatButtonModule
рднреА
MatButtonModule
рдЙрдкрдпреЛрдЧ
MatButtonModule
рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ,
Start quiz
рдмрдЯрди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб рдмрдВрдбрд▓ рдХреЗ рдПрдХ рдФрд░ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдм рд╣рдордиреЗ
QuizCardComponent
рдХреЗ рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХрд╛
QuizCardComponent
ред рдпрд╣ рдШрдЯрдХ рдПрдХ рдХрд╛рд░реНрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдХреА рд╢реИрд▓реА рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЪрд┐рддреНрд░, рдПрдХ рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдмрдЯрди рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЕрдм рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
рдмрдЯрди, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рд╕рд╣реА рдпрд╛ рдЧрд▓рдд рдЙрддреНрддрд░ рд╣реИ, рджрдмрд╛рдиреЗ рдкрд░ рд╣рд░рд╛ рдпрд╛ рд▓рд╛рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ? рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВред рдФрд░ рд╣рдореЗрдВ рдпрд╣ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рдмрд╛рдж, рджреВрд╕рд░реЗ рдкреНрд░рд╢реНрди рдХрд╛ рдПрдХ рдХрд╛рд░реНрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВред
рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ
рдЬрдм рдЖрдк рдЖрд▓рд╕реА рдореЛрдб рдореЗрдВ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдШрдЯрдХреЛрдВ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдЬрдм рдЖрдк рдЙрддреНрддрд░ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рдирдпрд╛ рдкреНрд░рд╢реНрди рдХрд╛рд░реНрдб рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐
QuizCardComponent
рдШрдЯрдХ
QuizCardComponent
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк
EventEmitter
рд╡рд░реНрдЧ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ
EventEmitter
, рддреЛ рдЖрдк рдпрд╣
EventEmitter
рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣
Subject
рд╡рдВрд╢рдЬ рд╣реИ:
export declare class EventEmitter<T extends any> extends Subject<T>
рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐
EventEmitter
рдореЗрдВ рдПрдХ
subscribe
рд╡рд┐рдзрд┐ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ:
instance.questionAnswered.pipe( takeUntil(instance.destroy$) ).subscribe(() => this.showNewQuestion());
рдпрд╣рд╛рдБ рд╣рдо
questionAnswered
рдзрд╛рд░рд╛ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░
showNextQuestion
рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐
lazyLoadQuizCard
рддрд░реНрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд
lazyLoadQuizCard
рд╣реИ:
async showNewQuestion() { this.lazyLoadQuizCard(); }
рдШрдЯрдХ рдХреЗ рдирд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рдЦрд╛рд▓реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
takeUntil(instance.destroy$)
.
takeUntil(instance.destroy$)
рдирд┐рд░реНрдорд╛рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐
ngOnDestroy
рдШрдЯрдХ рдЬреАрд╡рди рдЪрдХреНрд░ рдХрд╛
ngOnDestroy
рд╣реБрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ
destroy$
рдХрд░реЗрдВ
next
рдФрд░
complete
рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рдШрдЯрдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЛрдб рд╣реИ, рд╕рд┐рд╕реНрдЯрдо рдЕрддрд┐рд░рд┐рдХреНрдд HTTP рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдХреЛрдб рдЯреБрдХрдбрд╝рд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реИ, рдПрдХ рдирдпрд╛ рдШрдЯрдХ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдбрд╛рд▓реЗрдВред
рдШрдЯрдХ рдЬреАрд╡рди рдЪрдХреНрд░ рд╣реБрдХ
рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
QuizCardComponent
рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд▓рдЧрднрдЧ рд╕рднреА рдШрдЯрдХ рдЬреАрд╡рди рдЪрдХреНрд░ рд╣реБрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд╣рд▓рд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдПрдХ рд╣реБрдХ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕рд╛
рдШрдЯрдХ рдЬреАрд╡рди рдЪрдХреНрд░ рд╣реБрдХрдпрд╣
ngOnChanges
рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реБрдХ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдо рдЦреБрдж рдШрдЯрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЗрдирдкреБрдЯ рдЧреБрдгреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо
ngOnChanges
рдЬреАрд╡рдирдЪрдХреНрд░ рд╣реБрдХ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред
ngOnChanges
рдЙрджрд╛рд╣рд░рдг рдХреЗ
ngOnChanges
рд╣реБрдХ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рдПрдХ
SimpleChange
рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
(instance as any).ngOnChanges({ question: new SimpleChange(null, instance.question, true) });
рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ
ngOnChanges
рдШрдЯрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ
SimpleChange
рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдкрд╣рд▓рд╛ рд╣реИ, рдкрд┐рдЫрд▓рд╛ рдорд╛рди
null
, рдФрд░ рд╡рд░реНрддрдорд╛рди рдорд╛рди рдПрдХ рдкреНрд░рд╢реНрди рд╣реИред
рдЕрджреНрднреБрдд! рд╣рдордиреЗ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдШрдЯрдХ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛, рдпрд╣ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЬрд╡рд╛рдм рджрд┐рдпрд╛ рдФрд░ рдШрдЯрдХ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд╣реБрдХ рдХреА рдХреЙрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХреАред
рдпрд╣рд╛рдБ рд╣рдо рдЬрд┐рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдереЗ, рдЙрд╕рдХреЗ рд▓рд┐рдП рд╕реЛрд░реНрд╕ рдХреЛрдб рдпрд╣рд╛рдБ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдо
рдЖрд▓рд╕реА рдХрдВрдкреЛрдиреЗрдВрдЯ рд▓реЛрдбрд┐рдВрдЧ рд╕реЗ Angular Developers рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░рдлреЙрд░реНрдореЗрдВрд╕ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдмреЗрд╣рддрд░реАрди рдЕрд╡рд╕рд░ рдорд┐рд▓рддреЗ рд╣реИрдВред рдЙрдирдХреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рдЖрд▓рд╕реА рдореЛрдб рдореЗрдВ рд▓реЛрдб рдХреА рдЧрдИ рд╕рд╛рдордЧреНрд░реА рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрд╣реБрдд рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд╣реИрдВред рдкрд╣рд▓реЗ, рдЬрдм рдЖрд▓рд╕реА рдореЛрдб рдореЗрдВ рдХреЗрд╡рд▓ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрддрдиреА рд╕рдЯреАрдХрддрд╛ рдирд╣реАрдВ рдереАред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдШрдЯрдХ рдореЗрдВ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рднреА рдзреНрдпрд╛рди рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╣ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред
рдЖрдЗрд╡реА рдЗрдВрдЬрди рдиреЗ рд╕реНрдерд╛рдиреАрдпрддрд╛ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдкреЗрд╢ рдХреА, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛрдгреАрдп рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреА рдиреАрдВрд╡ рд╣реИред
рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдгреАрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЖрд▓рд╕реА рдШрдЯрдХ рд▓реЛрдбрд┐рдВрдЧ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ?
