Angular: рдПрдХ рдЖрд▓рд╕реА рд▓реЛрдбреЗрдб NgModule рдХреЗ рдкреНрд░рд╡реЗрд╢ рдШрдЯрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд╣рд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдлрд╝рд░ре░ 2017  ┬╖  122рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: angular/angular

рдореИрдВ рдПрдХ рд╕рдмрдорд┐рдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ ... ("x" рдХреЗ рд╕рд╛рде рдПрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ)

[ ] bug report => search github for a similar issue or PR before submitting
[X] feature request
[ ] support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question

@DzmitryShylovich . рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдЕрдиреБрд╕рд╛рд░ # 12275 рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд░реНрддреА рдЕрдВрдХ

рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░
entryComponents рдЖрд▓рд╕реА рд▓реЛрдб рдХрд┐рдП рдЧрдП NgModule рдХреЛ ComponentFactoryResolver рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢: No component factory found for {{entryComponent}}

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░
entryComponents рд╡реИрд╕реЗ рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдиреНрдпреВрдирддрдо рдкреБрдирд░реБрддреНрдкрд╛рджрди
http://plnkr.co/edit/9euisYeSNbEFrfzOhhzf?p=preview

рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реЗрдЯрдЕрдк рдмрдирд╛рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред Main рдШрдЯрдХ Type рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред EntryComponent рдХреЛ entryComponent рдореЗрдВ Page1Module рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ Page1Module рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, EntryComponent рдХреЛ ComponentFactoryResolver $ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп, No component factory found for EntryComponent рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рдгрд╛/рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдХреНрдпрд╛ рд╣реИ?
рд░реВрдЯ рд╕реНрддрд░ рдкрд░ entryComponents рдЪрд╛рдЗрд▓реНрдб рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ

  • рдореЙрдбрд▓ рдЬреЛ рд╕рдм рдХреБрдЫ рдХреЗ рдКрдкрд░ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ
  • рд╕реВрдЪрдирд╛рдПрдВ
  • рдЖрджрд┐ред

рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВ:
рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдгреАрдп 2.1.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдгреАрдп (2.4.6) рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ plnkr)ред

  • рднрд╛рд╖рд╛: рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ ^2.0.0

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

рдареАрдХ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдПрдХ рдлреАрдЪрд░ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдмрджрд▓ рд░рд╣рд╛ рд╣реВрдВред

IMO рдЗрди рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ DOM рдХреЗ рд╕рд╛рде рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХреЛрдгреАрдп рджреНрд╡рд╛рд░рд╛ рд╣реА рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдХреБрдЫ рдЬрд╛рдБрдЪ-рдкрдбрд╝рддрд╛рд▓ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЖрдкрдХреЗ рдХрд╛рдореЛрдВ рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдкреНрд░рд╡реЗрд╢ рдШрдЯрдХ рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рд╕рдорд╛рди рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред https://angular.io/docs/ts/latest/cookbook/ngmodule-faq.html#! #q-рдЖрд▓рд╕реА-рднрд╛рд░рд┐рдд-рдореЙрдбреНрдпреВрд▓-рдкреНрд░рджрд╛рддрд╛-рджреГрд╢реНрдпрддрд╛
рд╡реЗ рдХреЗрд╡рд▓ рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реЗ рд╣реИрдВред

рдареАрдХ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдЕрднреАрд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ, рддреЛ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдЬреИрд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЙрдбрд╝рд╛ рджреЗрдирд╛ рдПрдХ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИред

рдпрджрд┐ рдЖрдк MainComponent рдореЗрдВ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ AppModule рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рддреЛ рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдм рдХреБрдЫ рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛ рд╣реИ?

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

рдЗрд╕рдХрд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрд▓рд╕реА рд▓реЛрдб рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рдореЛрдбрд▓ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред

рдЖрдкрдХреЛ рд╕рд╛рдордЧреНрд░реА рдХреЗ https://material.angular.io/components/component/dialog рдХреЗ рд╕рдорд╛рди рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рддрдм рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рд╡рд╛рд╣, рддреЛ рдЖрдкрдХреА рд░рд╛рдп рдпрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдбреАрдУрдПрдо рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ рдХреЛрдгреАрдп рд╕рд╛рдордЧреНрд░реА рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ: https://github.com/angular/material2/blob/master/src/lib/core/portal/dom-portal-host.ts#L30 -L55

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

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдирд╣реАрдВ рд▓реЗ рд╕рдХрддрд╛ред

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

рдареАрдХ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдПрдХ рдлреАрдЪрд░ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдмрджрд▓ рд░рд╣рд╛ рд╣реВрдВред

IMO рдЗрди рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ DOM рдХреЗ рд╕рд╛рде рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХреЛрдгреАрдп рджреНрд╡рд╛рд░рд╛ рд╣реА рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдЬ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ - рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдореЛрдбрд▓ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдРрдк рдореЛрдбрд▓ рд╕реЗрд╡рд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣ entryComponents рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЗрд╕реЗ рдирд╣реАрдВ рдвреВрдВрдв рд╕рдХрддрд╛)ред рдЗрд╕реЗ рдореБрдЦреНрдп рдмрдВрдбрд▓ рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЬреЛ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рддрд░реНрдХ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ: рднреНрд░рдорд┐рдд:

рд╡рд╣рд╛рдБ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ ... рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рддрд░реНрдХ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдПрдХ рдЖрд▓рд╕реА рд▓реЛрдбреЗрдб рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЙрдореНрдкреЛрдиреЗрдВрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ: рдореЗрд░рд╛ рдЖрд▓рд╕реА рд▓реЛрдбреЗрдб рдореЙрдбреНрдпреВрд▓ рдореЗрд░реЗ рдРрдк рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рдПрдВрдЯреНрд░реАрдХрдВрдкреЛрдиреЗрдВрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ :(

рдЗрд╕реА рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛, рдореИрдВ рдПрдХ рд╕рдВрдХрд▓реНрдк рдкрд░ рдЖрдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдирдЬреА-рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдореЛрдбрд▓ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рджред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдореБрджреНрджрд╛ (рдореЗрд░реА рд╕рдордЭ рд╕реЗ рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рд╕рд╣реА рдХрд░реЗрдВ) рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдкрдХрд╛ рдРрдк рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЖрдкрдХреЗ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЗрдВрдЬреЗрдХреНрдЯрд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЗрдВрдЬреЗрдХреНрдЯрд░ рдХреЛ рд╕реЗрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдУрдкреА рдореЗрдВ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред рдЬрдм рдЖрдкрдХреЗ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реЗ рдПрдХ рд▓реЛрдб рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рдЖрдкрдХреЗ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рдЖрдк рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЗрд╕рдХрд╛ рдЕрдкрдирд╛ рдЗрдВрдЬреЗрдХреНрдЯрд░ рдорд┐рд▓рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬрдм рддрдХ рдЖрдк рдЕрдкрдиреЗ рдЧрддрд┐рд╢реАрд▓ рдШрдЯрдХ рдХреЛ рд╕рд╣реА injector рдФрд░ componentFactoryResolver рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рддрдм рддрдХ рдЖрдк рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд╣рд░ entryComponent рд╕рдВрджрд░реНрдн рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

рддреЛ, рдореИрдВрдиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╡рд╣ injector рдФрд░ componentFactoryResolver рдХреЛ рдЙрд╕ рдЧрддрд┐рд╢реАрд▓ рдШрдЯрдХ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЧрд▓рдЯрди рд╕реЗрд╡рд╛ рдмрдирд╛ рд░рд╣рд╛ рдерд╛ рдЬрд┐рд╕реЗ рдореИрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╣ рд╕реЗрд╡рд╛ рдЖрдкрдХреЗ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░ рдЬрдм рднреА рдореИрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдШрдЯрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдЬреЛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЗрд╕ рд╕реЗрд╡рд╛ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

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

@ViewChild('parent', {read: ViewContainerRef}) parent: ViewContainerRef;
  private componentRef: ComponentRef<any>;
...
const childComponent = this.componentFactoryResolver.resolveComponentFactory(yourComponentRef);
this.refInjector = ReflectiveInjector.resolveAndCreate([{provide: yourComponentRef, useValue: yourComponentRef}], this.injector);
this.componentRef = this.parent.createComponent(childComponent, 0, this.refInjector);

```рдПрдЪрдЯреАрдПрдордПрд▓

Then in your parent component for your entryComponent you'll inject `injector` and `componentFactoryResolver` and set their values in the shared service:
```js
constructor(private componentFactoryResolver: ComponentFactoryResolver, private injector: Injector) {}

рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ рдФрд░ рдореИрдВ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВред рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдореИрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ рдХрд┐ рдореИрдВ рдХреЛрдгреАрдп 2.4.9 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдзрдиреНрдпрд╡рд╛рдж @jmcclanahanред рдХреНрдпрд╛ рдЖрдк рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕реЗрд╡рд╛ рдХреИрд╕реА рджрд┐рдЦрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдореИрдВ рдПрдХ рд╕рдорд╛рди рдореБрджреНрджреЗ рд╕реЗ рдЬреВрдЭ рд░рд╣рд╛ рд╣реВрдВ, рдПрдХ рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдПрдХ рдШрдЯрдХ рдХреЛ рджреВрд╕рд░реЗ рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рднрд▓реЗ рд╣реА (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ) рдореИрдВрдиреЗ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рдкреНрд░рд╡реЗрд╢ рдШрдЯрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ I рдирд╣реАрдВ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж

@gcorgnet - рдЬрд╝рд░реВрд░ред рддреЛ рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдерд╛, рдореЗрд░реЗ рдРрдк рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдкрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЯреВрд▓рдмрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЯреВрд▓рдмрд╛рд░ рдХреЗ рднреАрддрд░ рдореИрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдмрдЯрди рдФрд░ рдЯреВрд▓ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореИрдВ рдХрд┐рд╕ рдкреЗрдЬ рдкрд░ рдерд╛ред рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрди рдмрдЯрдиреЛрдВ/рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рдЙрдирдХреЗ рддрд░реНрдХ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдХ рдмрдирд╛рдпрд╛ рдФрд░ рдореИрдВ рдЗрди рдШрдЯрдХреЛрдВ рдХреЛ рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬрд┐рд╕рд╕реЗ рд╡реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рддреЛ, рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдореЗрд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд╣рд░ рдХреБрдЫ рднреА рдЗрди рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреВрд▓рдмрд╛рд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЕрднреА рднреА рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЯреВрд▓рдмрд╛рд░ рдкрд░ рджрд┐рдЦрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдиреАрдЪреЗ рдореЗрд░рд╛ рдХрд╛рдордХрд╛рдЬреА рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛:

рдореИрдВ рдЯреВрд▓рдмрд╛рд░ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рдПрдХ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХрд╛ рдЖрд▓рд╕реА рдШрдЯрдХ componentFactoryResolver рдФрд░ injector рдЯреВрд▓рдмрд╛рд░ рд╕рд╛рдорд╛рдиреНрдп рдШрдЯрдХ рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ receiveContext рдХреЗ рд▓рд┐рдП рд╕реБрди рд░рд╣рд╛ рд╣реИ

toolbar.service.ts

@Injectable()
export class ToolbarService {
    contextReceivedSource = new Subject<any>();
    contextReceived$ = this.contextReceivedSource.asObservable();

    receiveContext(componentFactoryResolver: ComponentFactoryResolver, injector: Injector) {
        this.contextReceivedSource.next({ resolver: componentFactoryResolver, injector: injector });
    }
}

рдЕрдкрдиреЗ рдЖрд▓рд╕реА рд▓реЛрдб рдХрд┐рдП рдЧрдП рдШрдЯрдХ рдореЗрдВ рдЖрдк componentFactoryResolver рдФрд░ injector рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдФрд░ рдЯреВрд▓рдмрд╛рд░ рд╕реЗрд╡рд╛ рдореЗрдВ рдПрдХ рдИрд╡реЗрдВрдЯ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред

рдЖрд▓рд╕реА рд▓реЛрдбреЗрдб рдЯреВрд▓рдмрд╛рд░ рдШрдЯрдХ

...
constructor(private componentFactoryResolver: ComponentFactoryResolver, private injector: Injector) {}
...
ngOnInit() {
  this.toolbarService.receiveContext(this.componentFactoryResolver, this.injector);
}
...

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

...
@ViewChild('toolbarTarget', {read: ViewContainerRef}) toolbarTarget: ViewContainerRef;
component: Type<Component>;
refInjector: ReflectiveInjector;
resolverSub: Subscription;
refInjector: ReflectiveInjector;
componentFactoryResolver: ComponentFactoryResolver;
injector: Injector;

ngOnInit() {
  this.resolverSub = this.toolbarService.contextReceived$.subscribe(resolver => {
      this.componentFactoryResolver = resolver.resolver;
      this.injector = resolver.injector;
    });
}

updateToolbar(data: any) {
    this.clearComponent();
    this.component = data['toolbar'];
    if (this.component) {
      const childComponent = this.componentFactoryResolver.resolveComponentFactory(this.component);
      this.refInjector = ReflectiveInjector
          .resolveAndCreate([{provide: this.component, useValue: this.component}], this.injector);
      this.componentRef = this.toolbarTarget.createComponent(childComponent, 0, this.refInjector);
    }
  }

  clearComponent() {
    this.toolbarTarget.clear();
    if (this.componentRef) { this.componentRef.destroy(); };
  }

  ngOnDestroy() {
    this.resolverSub.unsubscribe();
    this.clearComponent();
  }

рдЖрдкрдХрд╛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдШрдЯрдХ рддрдм рдХрд╣реАрдВ рднреА рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд╣рд╛рдВ рдЖрдк рд╕рдВрдмрдВрдзрд┐рдд #toolbarTarget . рдбрд╛рд▓рддреЗ рд╣реИрдВ

<div #toolbarTarget></div>

рдПрдХ рддрд░рдл рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдорд╛рд░реНрдЧ рд╕реЗ рдЖрд▓рд╕реА рд▓реЛрдб рдШрдЯрдХ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдЯреВрд▓рдмрд╛рд░ рдШрдЯрдХ рдореЗрдВ рдЗрд╕ рд▓рд╛рдЗрди this.component = data['toolbar']; рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рдХреЛрдб рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рдЗрд╕реЗ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред

{ path: '', component: yourComponent, data: { toolbar: yourToolbarComponentToInject } }

рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рд╢реНрди рд╣реЛрдиреЗ рдкрд░ рдореБрдЭрд╕реЗ рдкреВрдЫреЗрдВ!

@jmcclanahan рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкреНрд░рд╢реНрди (рд╢рд╛рдпрдж рдПрдХ рдмреЗрд╡рдХреВрдл) рд╣реИ, рдЬрдм рдЖрдк "рдЖрд▓рд╕реА рд▓реЛрдб рдЯреВрд▓рдмрд╛рд░ рдШрдЯрдХ" рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реЗрд╡рд╛ рдХреЙрд▓ рдХреЛрдб рдХреЛ ngOnInit рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ (рдШрдЯрдХ) рдЗрд╕реЗ HTML рдХреЛрдб рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ DOM рдореЗрдВ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛? рдЪреВрдВрдХрд┐ рдЙрд╕ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЯреЙрдкрдмрд╛рд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдХрд╣реАрдВ рдФрд░ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рддрд╛ред

@ рдбреВрдиреЛрд╕ - рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЦреЗрдж рд╣реИ! рдЖрдк рдбрд╛рдпрдирд╛рдорд┐рдХ рдШрдЯрдХ рдХреЛ entryComponent рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕ рдЖрд▓рд╕реА рд▓реЛрдбреЗрдб рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

рдлрд┐рд░ рдЯреВрд▓рдмрд╛рд░ рдШрдЯрдХ рдореЗрдВ рд╣реА рдЖрдк рдПрдХ ViewContainerRef рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЖрдкрдХреЗ рдПрдЪрдЯреАрдПрдордПрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЙрд╕ рд╕реНрдерд╛рди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдЧрд╛ рдЬрд╣рд╛рдВ рдЖрдк рдЧрддрд┐рд╢реАрд▓ рдШрдЯрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдлрд┐рд░ updateToolbar() рдореЗрдердб рдЖрдкрдХреЗ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ рдмрдирд╛рдиреЗ, рдЙрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдерд╛рди рдкрд░ рд░рдЦрдиреЗ рдФрд░ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ рдЯреВрд▓рдмрд╛рд░ рдкрд░ рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдЧреАред

@ViewChild('toolbarTarget', {read: ViewContainerRef}) toolbarTarget: ViewContainerRef;
...
updateToolbar(data: any) {
    this.clearComponent();
    this.component = data['toolbar'];
    if (this.component) {
      const childComponent = this.componentFactoryResolver.resolveComponentFactory(this.component);
      this.refInjector = ReflectiveInjector
          .resolveAndCreate([{provide: this.component, useValue: this.component}], this.injector);
      this.componentRef = this.toolbarTarget.createComponent(childComponent, 0, this.refInjector);
    }
  }

рдЖрдкрдХрд╛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдШрдЯрдХ рддрдм рдХрд╣реАрдВ рднреА рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд╣рд╛рдВ рдЖрдк рд╕рдВрдмрдВрдзрд┐рдд #toolbarTarget . рдбрд╛рд▓рддреЗ рд╣реИрдВ

<div #toolbarTarget></div>

рдЬрдм рднреА ngOnDestroy () рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ clearComponent () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкреГрд╖реНрда рдЫреЛрдбрд╝рдиреЗ рдкрд░ рдШрдЯрдХ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддрд╛ рд╣реИред

clearComponent() {
    this.toolbarTarget.clear();
    if (this.componentRef) { this.componentRef.destroy(); };
  }

  ngOnDestroy() {
    this.resolverSub.unsubscribe();
    this.clearComponent();
  }

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

@jmcclanahan рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдбрд╛рдпрдирд╛рдорд┐рдХ рдШрдЯрдХ ( this.toolbarService.receiveContext рдХреЙрд▓ рдкрд╛рд░реНрдЯ) рд╕реЗ рд╕реЗрд╡рд╛ рдХреЛ рдХреЙрд▓ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ ngOnInit рдХреЛ рдХрднреА рднреА рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╛ рдореИрдВ рдбреЙрди ' рдЯреА рджреЗрдЦреЗрдВ рдХрд┐ рдРрд╕рд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ)ред рдореИрдВрдиреЗ рдПрдВрдЯреНрд░реА рдХреЙрдореНрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд▓реЗрдХрд┐рди рдСрдирдЗрдирд┐рдЯ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреБрдЫ рд╣рдж рддрдХ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@ рдбреВрдиреЛрд╕ - рд╢рд╛рдпрдж рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдРрдк рдХреЗ рдЗрдВрдбреЗрдХреНрд╕ рдкреЗрдЬ рд╕реЗ рдкреЗрдЬ рдП рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреЗрдЬ рдП рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рд░реНрдЧ рд╣реЛрдЧрд╛, рдЬреЛ рдкреЗрдЬ рдП рдХреЗ рдореЙрдбреНрдпреВрд▓/рдШрдЯрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдЧрд╛ред рдкреЗрдЬ рдП рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдШрдЯрдХ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕реЗ рдореИрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдЯреВрд▓рдмрд╛рд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рддреЛ, рдкреЗрдЬ рдП рдХреЗ рдореБрдЦреНрдп рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рдЖрдк ComponentFactoryResolver рдФрд░ Injector рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдлрд┐рд░ receiveContext рдИрд╡реЗрдВрдЯ рдХреЛ рдЖрдЧ рд▓рдЧрд╛ рджреЗрдВрдЧреЗред рдХреЛрдб рдХрд╛ рдпрд╣ рдмрд┐рдЯ:

constructor(private componentFactoryResolver: ComponentFactoryResolver, private injector: Injector) {}
...
ngOnInit() {
  this.toolbarService.receiveContext(this.componentFactoryResolver, this.injector);
}

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

@jmcclanahan рдЖрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА, рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж !!! рдпрд╣ рдЕрдм рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ :)

@jmcclanahan рдореИрдВрдиреЗ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдЦреЛрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕реА рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред рдПрдХ рдмрд╛рдд рдореИрдВрдиреЗ рджреЗрдЦреА рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛рдУрдВ рдореЗрдВ рдХреБрдЫ рд╡рд░реНрдгреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдЗрдВрдЬреЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ComponentFactoryResolver рдХрд╛ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдмрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
injector.get(ComponentFactoryResolver);

рдФрд░ рдЙрд╕ рд╕рдВрджрд░реНрдн рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ ComponentFactoryResolver рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред

рдпрд╣ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рднреА рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдПрдХ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рдШрдЯрдХ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рдШрдЯрдХ рд╕реЗ ComponentFactoryResolver рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд░реВрдЯ рдЗрдВрдЬреЗрдХреНрдЯрд░ (рдЬрд┐рд╕рдореЗрдВ рд░реВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдлреИрдХреНрдЯреНрд░реА рд░реАрд╕реЛрд▓реНрд╡рд░ рд╣реЛрддрд╛ рд╣реИ) рд▓реЛрдб рдХрд┐рдП рдЧрдП рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рд╕реА рднреА рдПрдВрдЯреНрд░реА рдХреЙрдореНрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред

рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреЛрдгреАрдп рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЬреЛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ) рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрдЯрд┐рд▓рддрд╛ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ, рдЗрдореНрд╣реЛред

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

рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдлреАрдЪрд░ рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд░реВрдВрдЧрд╛ред

рд╢реБрдХреНрд░рд┐рдпрд╛!

рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж @jmcclanahan

@jmcclanahan рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж !! @renatoaraujoc рдХреНрдпрд╛ рдЖрдкрдиреЗ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдПрдВрдЧреБрд▓рд░ рдЯреАрдо рдХреЛ рд╕рдмрдорд┐рдЯ рдХреА рд╣реИ?

@rraya рдореИрдВрдиреЗ рдЗрд╕ "рдореБрджреНрджреЗ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдлреАрдЪрд░ рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд┐рдпрд╛ рд╣реИ (рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ), рдХреГрдкрдпрд╛ # 17168 рджреЗрдЦреЗрдВред

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

@jmcclanahan рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рдЖрдкрдХреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдЧрд░ рдХреБрдЫ рд╕реБрдЭрд╛рд╡ рд╣реИрдВ рддреЛ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 'this.componentFactoryResolver.resolveComponentFactory' рдкрд░ рдХреБрдЫ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рд╣реИред

@ рдбреВрдиреЛрд╕ рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдПрдХ рд╣рд╛рде рджреЗ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рд╣рдлреНрддреЛрдВ рддрдХ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд┐рд░рджрд░реНрдж рд╣реИред

@рд╡рд░реНрдЯреНрд╕ ,

рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рднреА рдЖрдк рдЖрд▓рд╕реА рд▓реЛрдб рдХрд┐рдП рдЧрдП рдорд╛рд░реНрдЧ рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдХреНрд░рд┐рдп рдорд╛рд░реНрдЧ рдПрдХ рдмрдЪреНрдЪреЗ рдЗрдВрдЬреЗрдХреНрдЯрд░ рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЙрд╕ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдВрдЯреНрд░реАрдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ AppModule (рдЬреЛ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд░реВрдЯ рдЗрдВрдЬреЗрдХреНрдЯрд░ рд╣реИ) рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ modalService рд╣реИ, рддреЛ рдХрдВрдкреЛрдиреЗрдВрдЯFactoryResolver рдХрд┐рд╕реА рднреА рдирдП рдПрдВрдЯреНрд░реАрдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЛ рдХрд┐рд╕реА рднреА рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рди рдкрд╛рдПрдЧрд╛ред рддреЛ, рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдШрдЯрдХ рд╕реЗ рдкреВрд░рдХ рдлреИрдХреНрдЯреНрд░реА рд░реАрд╕реЛрд▓рд╡рд░ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдореЛрдбрд▓ рд╕реЗрд╡рд╛ рдХреЛ рдмрддрд╛рдПрдВ "рдЕрд░реЗ, рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЙрдореНрдкреЛрдиреЗрдВрдЯ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЗрдВрдЬреЗрдХреНрдЯрд░/рдШрдЯрдХ рдлреИрдХреНрдЯреНрд░реА рд░реАрд╕реЛрд▓реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ"ред

рд╕рдордЭрдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред

@renatoaraujoc рдЖрдкрдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдПрдХ рд▓рд┐рдВрдХ рд╕реЗ рдШрдЯрдХ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдмрд╛рдПрдВ рд╕рд╛рдЗрдбрдмрд╛рд░ рд╕реЗ рдореЗрдиреВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдПрдХ рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░реВрдВрдЧрд╛, рдФрд░ рдлрд┐рд░, рдореИрдВ рдмрдирд╛рдЙрдВрдЧрд╛ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдШрдЯрдХ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдПрдХ рдЯреИрдм рдЬреИрд╕рд╛ рдРрдк рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП, рд╕рд╣реА рдореБрдЦреНрдп рд╕рд╛рдордЧреНрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рдХреБрдЫ рдШрдЯрдХ рд╕рд╛рдордЧреНрд░реА рд╣реИрдВ, рдпрджрд┐ рдореИрдВ рдЯреИрдм рдЯреНрд░рд┐рдЧрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рд╕рд╛рдордЧреНрд░реА рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рдпрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд┐рд░реНрдорд╛рдг рдЯреИрдм рд╣реИ- рдХреЛрдгреАрдп 2/4 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдРрдк рдХреА рддрд░рд╣?

рд╡реИрд╕реЗ рднреА, рдЖрд▓рд╕реА рд▓реЛрдб рдШрдЯрдХ рдХрднреА рднреА init рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рд╕реЗрд╡рд╛ рдХреЛ рдЗрд╕рдХреЗ рдШрдЯрдХ рдлреИрдХреНрдЯреНрд░реА рд░рд┐рд╕реЛрд▓реНрд╡рд░ рдХреЛ рдХреИрд╕реЗ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ?

рдореЗрд░реЗ рдРрдк рдХреЗ рд▓рд┐рдП, рдПрдХ AppModule рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ CoreModule рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдореЗрд░рд╛ ContentTabModule (рдЯреИрдмрд╕реЗрдЯ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреБрдХреНрдд) CoreModule рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, ContentTabModule рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╕рднреА рдШрдЯрдХ, рдЗрд╕рдореЗрдВ рд╕реЗрд╡рд╛, рдШрдЯрдХ, рдирд┐рд░реНрджреЗрд╢, рдкрд╛рдЗрдк рд╣реИ, рдЬрдм рдПрдХ рдореЗрдиреВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рд▓рд┐рдВрдХ, ContentTabService рдореЗрдиреВ params рд╕реЗ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдШрдЯрдХ рдмрдирд╛рдПрдЧрд╛ред рдореИрдВрдиреЗ рдиреЗрдЯрд╡рд░реНрдХ рдкреИрдирд▓ рдкрд░ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдХреБрдЫ рдЯреНрд░рдВрдХ (рдореИрдВ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ) рджреЗрдЦрд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рдореИрдВ рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдШрдЯрдХ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

@renatoaraujoc рдореИрдВ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдШрдЯрдХ рд╕реЗ рдкреВрд░рдХ рдлреИрдХреНрдЯреНрд░реА рд░реАрд╕реЛрд▓рд╡рд░ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдФрд░ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдШрдЯрдХ рдХрднреА рднреА init рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рдпрд╛ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ)

@werts рдКрдкрд░ @jmcclanahan рдХреЗ рд╕рд╛рде рд╣реБрдИ рдмрд╛рддрдЪреАрдд рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, рд╣рдордиреЗ рдЯреВрд▓рдмрд╛рд░ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рдХреА рдмрд╛рдд рдХреАред

@Dunos рдореИрдВ @jmcclanahan рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╡рд╣реА рдкреАрдбрд╝рд┐рдд рд╣реВрдВред рдЖрд▓рд╕реА рд▓реЛрдб рдШрдЯрдХ рдХрднреА рднреА init рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
this.toolbarService.receiveContext () рдХреЛ рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ?

@werts рдЖрдкрдХреЛ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдореБрдЦреНрдп рдШрдЯрдХ рдХреЛ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рд╡рд╣ рдШрдЯрдХ рд╡рд╣ рд╣реИ рдЬреЛ рдСрдХреНрд╕ рд╕реЗрд╡рд╛ рдХреЛ рдЕрдкрдиреЗ рдЗрдВрдЬреЗрдХреНрдЯрд░ рдФрд░ рдХрдВрдкреЛрдиреЗрдВрдЯ рдлреИрдХреНрдЯреНрд░реА рд░реАрд╕реЛрд▓рд╡рд░ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред

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

@werts ... рд╣рд╛рдБ, рдпрд╣ рд╕рдВрднрд╡ рд╣реИред рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП https://github.com/Toxicable/module-loading рджреЗрдЦреЗрдВ ред

рдареАрдХ рд╣реИ, рдЗрд╕реЗ рдЕрднреА рдЖрдЬрд╝рдорд╛рдПрдВ, thxред @mlc-mlapis

@werts et al: рдХреНрдпрд╛ рдореИрдВ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЗрд╕ рд╕рдорд░реНрдерди рд╕реВрддреНрд░ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреИрдирд▓ рдкрд░ рд▓реЗ рдЬрд╛рдПрдВ? StackOverflow рдпрд╛ Gitter рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡реИрд╕реЗ рднреА, рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдХрдИ рдЕрдиреНрдп рд╣реИрдВ) рдФрд░ рдпрд╣ рдЕрднреА рдмрд╣реБрдд рд╢реЛрд░ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдереЛрдбрд╝рд╛ рд╣рдЯрдХрд░ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдкреНрд▓рд╕ рд╕рд╛рдЗрдб рдкрд░: рдРрд╕реЗ рдорджрджрдЧрд╛рд░ рд╕рдореБрджрд╛рдп рдХреЛ рджреЗрдЦрдХрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛!

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рднреА рдПрдХ рдФрд░ рд░реЛрдб рдмреНрд▓реЙрдХ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореБрдЭреЗ рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ (app.module) рд╕реЗ рдЧреБрдордирд╛рдо рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реВрдВ рддрд╛рдХрд┐ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдореИрдВ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рдЯрд╛/рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд╕рдХреВрдВред app.component.html рдореЗрдВ рдПрдХ рдРрдк рд╡рд╛рдЗрдб <router-outlet name="app-popup"> рдЬрд┐рддрдирд╛ рд╕рд░рд▓ рдХреБрдЫ рдХреЗ рд▓рд┐рдП (рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЗрд╕ рдЙрдореНрдореАрдж рдореЗрдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ рдХрд┐ ComponentFactory рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ) рдмрд╕ рдЖрд▓рд╕реА рдмрдЪреНрдЪреЛрдВ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд░рд╣рд╛ рд╣реИред рдЕрдм рдХреЗрд╡рд▓ рдЖрд▓рд╕реА-рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╡реЗрд╢-рдмрдЪреНрдЪреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд╡реЗрд╢-рдШрдЯрдХреЛрдВ рдХреЗ рдореБрджреНрджреЗ рдкрд░ рдЖрддреЗ рд╣реИрдВред рдЕрдЧрд░ рдореБрдЭреЗ рдЖрд▓рд╕реА рдмрдЪреНрдЪреЛрдВ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдореЗрд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдареАрдХ рд╕реЗ рдЕрд▓рдЧ рд░рдЦрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдПрдВрдЧреБрд▓рд░ рдЯреАрдо рдЬрд▓реНрдж рд╣реА рдЗрд╕реЗ рдПрдХ рдореБрджреНрджреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭреЗрдЧреА рдФрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░реЗрдЧреАред рдореИрдВ рдЕрднреА рднреА рдЙрдирдХреЗ рд▓рд┐рдП рдЖрд▓рд╕реА-рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдРрдк-рд╡рд╛рдЗрдб рд░рд╛рдЙрдЯрд░-рдЖрдЙрдЯрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред https://github.com/angular/angular/issues/19520

рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдерд╛,
'рдЪрд▓реЛ рдПрдХ рджреГрд╢реНрдп рдмрдирд╛рддреЗ рд╣реИрдВ! ', jQuery рдЯреАрдо рдХрд╛ рдХрд╣рдирд╛ рд╣реИ,
'рдЪрд▓реЛ рдПрдХ рд╕реВрдЪреА рд╣реИ! ', рдХреЛрдгреАрдп рдЯреАрдо рдХрд╣рддреЗ рд╣реИрдВред

@jmcclanahan рд╣рдореЗрдВ рдЕрдм ngComponentOutlet рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред

<ng-container  *ngComponentOutlet="yourComponentClass;injector: yourInjector;"></ng-container>

@crysislinux ngComponentOutlet рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрдВ рдШрдЯрдХ рдХреЛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рдлреАрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЦрдмрд░? =/

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

рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ: рдХреНрдпрд╛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ ui- рд░рд╛рдЙрдЯрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ? рдпрд╛ рд╢рд╛рдпрдж рдХреЛрдгреАрдп рдХреЗ рдЕрдкрдиреЗ рд░рд╛рдЙрдЯрд░ рдХреЗ рдХрдИ рдЖрдЙрдЯрд▓реЗрдЯ рдХреНрд╖рдорддрд╛ рднреА? рдХреНрдпрд╛ рд╡реЗ рдЗрд╕ рддрд░реНрдХ рдХреЛ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХрд░рддреЗ рд╣реИрдВ? рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХреЛрдгреАрдп 1.x рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓рд╛ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдХреЛрдгреАрдп 2+ . рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдЯреВрд▓рдмрд╛рд░ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, ui-view (рд╢рд╛рдпрдж рдПрдХ рдирд╛рдорд┐рдд рджреГрд╢реНрдп, рдпрд╛ рдХреЛрдгреАрдп рд░рд╛рдЙрдЯрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд░рд╛рдЙрдЯрд░ рдЖрдЙрдЯрд▓реЗрдЯ), рдПрдХ рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реЗрдЯрдЕрдк рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдПрдХ рдЖрд▓рд╕реА рд▓реЛрдбреЗрдб рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд┐рддрд┐ рдЯреВрд▓рдмрд╛рд░ ui-view рдХреЛ рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдмрджрд▓ рджреЗрддреА рд╣реИ, рддреЛ рдЙрд╕реЗ рдХреЗрд╡рд▓ "рдХрд╛рдо" рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ ui-рд░рд╛рдЙрдЯрд░ рдЖрд▓рд╕реА рд▓реЛрдбреЗрдб рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬрд╣рд╛рдВ рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд╣рд░ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рджреГрд╢реНрдпреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ . рдпрд╣ рдХреЛрдгреАрдп 1.x рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрддреНрдпрдВрдд рд╕реАрдорд┐рдд рд╣реЛрдЧрд╛ред

рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕реА рдЪреАрдЬ рдХреЛ рд╣рд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдЖрдИ-рд░рд╛рдЙрдЯрд░/рдХреЛрдгреАрдп рд░рд╛рдЙрдЯрд░ рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ?

... рд╣рдо рд╢рд╛рдпрдж рдЦреЛ рдЧрдП рд╣реИрдВ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ рд╣рд░ рджрд┐рди рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ ... рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд░рд╛рдЙрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ред

рдКрдкрд░ @jmcclanahan рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рдореБрдЭреЗ this.componentRef.changeDetectorRef.markForCheck(); рдХреЗ рдмрд╛рдж this.componentRef = this.toolbarTarget.createComponent(childComponent, 0, this.refInjector);. . рдЬреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛

рдЗрд╕рдиреЗ рд╣реЛрд╕реНрдЯрдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ред

рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореИрдВ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдкрд░ рдПрдХ рд╕реНрд╡рд┐рдВрдЧ рд▓реВрдВрдЧрд╛ рдЬрд┐рд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдореВрд▓ рдкреНрд▓рдВрдХрд░ рдХрд╛ рдХрд╛рдВрдЯрд╛ рд╣реИред
http://plnkr.co/edit/x3fdwqrFDQr2og0p6gwr?p=preview

рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╕реЗрд╡рд╛ (ResolverService) рд╕реЗ рдШрдЯрдХ рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ entryComponent (Page1Module) рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рджреВрд╕рд░реА рд╕реЗрд╡рд╛ (рдЪреЗрдВрдЬрд░ рд╕рд░реНрд╡рд┐рд╕) рдХреЛ рдкрд╛рд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╣рд▓ рдХрд┐рдП рдЧрдП рдХрд╛рд░рдЦрд╛рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдШрдЯрдХ рдХреЛ рдореЗрдирдХрдВрдкреЛрдиреЗрдВрдЯ рдкрд░ рджреГрд╢реНрдп рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдЬреЛ рдореИрдВ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╡рд╣ рдпрд╣ рднрдЧрд╡рд╛рди рд▓рд╛рдирдд рд░рд╛рдЙрдЯрд░ рд╣реИред рдЗрд╕ рдкреНрд▓рдВрдХрд░ рдХреЛ рдЬрд╛рдВрдЪреЗрдВ ( @patkoeller рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдлреЛрд░реНрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛)
http://plnkr.co/edit/keMuCdU9BwBDNcaMUAEU?p=рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди @ src/page1.ts

рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдЬреЛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ рдХреБрдЫ рдШрдЯрдХ рдХреЛ рдЯреЙрдкрд▓реЗрд╡рд▓ рдРрдк рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде [routerLink] рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ: [routerLink]="['./', 'sub', 'component'] /page-1/sub/component рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЕрдЧрд░ рдореИрдВ рдХреБрдЫ ActivatedRoute $ рдХреЗ рд╕рд╛рде createComponent рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯрд░ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рд╣рд░ рджреВрд╕рд░реЗ рд░рд╛рдЙрдЯрд░ рд▓рд┐рдВрдХ рдХреЛ рдЦрд░рд╛рдм рдХрд░ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ router.routerState.snapshot рдХреЛ state рдкрд░ рдкреБрди: рдЕрд╕рд╛рдЗрди рдХрд░рддрд╛ рд╣реВрдВ рд╕рдВрдХрд▓реНрдк рд╕реЗ

рдХреНрдпрд╛ рдореБрдЭреЗ рдмрдЧ рдлрд╛рдЗрд▓ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП?

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

рдЗрд╕ рдкрд░ рдХреЛрдИ рдирдпрд╛ рдИрдЯреАрдП? рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдХреЛрдгреАрдп рдЯреАрдо рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛? рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рди рд╣реЛрдирд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧрд┐рд░рд╛рд╡рдЯ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЙрдбреНрдпреВрд▓ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдЕрднреА рдЦрд┐рдбрд╝рдХреА рд╕реЗ рдмрд╛рд╣рд░ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред @angular/material рдХреЗ рд╕рднреА рдбрд╛рдпрд▓реЙрдЧреНрд╕ рдХреЛ рд░реВрдЯ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЗрдореНрдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

@ xban1x рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рд╣реБрдИ рд╣реИред рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдкреВрд░реНрд╡рд╛рднреНрдпрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ :(

@jmcclanahan рдХреНрдпрд╛ рдЖрдкрдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрдЬреЗрдХреНрд╢рди рдШрдЯрдХ рдХрд╛ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдореИрдВрдиреЗ рдПрдХ рдШрдЯрдХ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЗрдВрдЬреЗрдХреНрд╢рди рджрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдкреЗрдбрд╝ рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдм рдореБрдЭреЗ рдкреЗрдбрд╝ рдХреЛ рдЗрдВрдЬреЗрдХреНрд╢рди рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХ рдореЗрдВ рдкреЗрдбрд╝ рдХреНрд▓рд┐рдХ рдШрдЯрдирд╛рдУрдВ рдкрд░ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЗрд╕рдХреЛ рдорджрдж рджреЗрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рдЕрдВрдХ #23819 рдореЗрдВ рдореИрдВрдиреЗ рдкреНрд░рд╡реЗрд╢ рдШрдЯрдХреЛрдВ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫрд╛ рдЬреИрд╕реЗ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде providesIn: 'root' ред рдЙрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдореБрджреНрджреЛрдВ рдХреЛ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЬрд▓реНрдж рд╣реА рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ :)

рдЕрджреНрдпрддрди

рдЧреИрд░-рдЫреЛрдЯрд╛ рдХреЛрдб рдореЗрдВ рдЬреЛ рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдЬрдм рд╕реЗрд╡рд╛ рдореЗрдВ providesIn рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ (рдЗрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛), рдЕрдЧрд░ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ:

var Injectable = makeDecorator('Injectable', undefined, undefined, undefined, function (injectableType, options) {
    if (options && options.providedIn !== undefined &&
        injectableType.ngInjectableDef === undefined) {
        injectableType.ngInjectableDef = defineInjectable({
            providedIn: options.providedIn,
            factory: convertInjectableProviderToFactory(injectableType, options)
        });
    }
});

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @Component({ ... entryComponent: true }) рдЬреИрд╕реЗ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдПрдХ рдШрдЯрдХ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рддрд░реНрдХ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рддрд╛рдХрд┐ рдЬрдм рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЦрдВрдб рд▓реЛрдб рд╣реЛ рдЬрд╛рдП, рддреЛ рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЛ рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рдШрдЯрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде entryComponents рдореЗрдВ рдШрдЯрдХ, рдЕрдиреНрдпрдерд╛ рдпрд╣ рдПрдХ рд╕рдВрдХрд▓рди рд╕рдордп рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛)ред

@lucasbasquerotto ... рд╣рдо рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдШрдЯрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдореИрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде <-> рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реАрдзреЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдШрдЯрдХ рдкреНрд░рдХрд╛рд░):

this._loader.load(url)
    .then((_ngModuleFactory: NgModuleFactory<any>) => {
        const _ngModuleRef: NgModuleRef<any> = _ngModuleFactory.create(this._injector);
        const _cmpType: Type<any> = _ngModuleRef.instance.cmps.get('dynamic');
        const _cmpFactory: ComponentFactory<any> = _ngModuleRef
            .componentFactoryResolver
            .resolveComponentFactory(_cmpType);
        this._cmpRef = this.vc.createComponent(_cmpFactory, 0, this._injector, []);
    });

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

рдЬрд╝рд░рд╛ рд╕реБрдирд┐рдП рд╕рднреА,

рдмрд╕ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

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

рдХреНрдпрд╛ рдореБрдЭреЗ рдЗрд╕реЗ рдлреАрдЪрд░ рдЕрдиреБрд░реЛрдз рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП?
------------- рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж

рдореЗрд░реЗ рдкреНрд░рд╢реНрди рдкрд░ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдореБрдЭреЗ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз https://github.com/angular/angular/issues/24069 рдорд┐рд▓рд╛

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЙрдбреНрдпреВрд▓ lazy loaded рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдЕрдкрдиреЗ entryModules рдХреЛ SharedFeatureModule (рдЬреЛ рдХреЗрд╡рд▓ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рд╕реЗ CoreModule рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЕрдм рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдлреАрдЪрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдХ рдХреЛ рдХреЛрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдареАрдХ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рдореБрджреНрджрд╛ рдЕрднреА рднреА рд╣рд▓ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ?

@jmcclanahan рдХрд╛ рд╕рдорд╛рдзрд╛рди

{ path: '', component: yourComponent, data: { toolbar: yourToolbarComponentToInject } }

рдЕрдВрдд рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЦрд╛рд▓реА рдорд╛рд░реНрдЧ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЬрдм рдореИрдВ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдмреНрд░реЗрдбрдХреНрд░рдВрдм рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдмрди рд░рд╣реА рд╣реИред

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

рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

рд╣рдорд╛рд░реЗ рдХрд╕реНрдЯрдо рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдореЗрдВ ComponentFactoryResolver рдФрд░ Injector рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░-рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рд╛рдЗрдбрдмрд╛рд░ рдХреЛ рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реИред рдХреЙрд▓рд┐рдВрдЧ рдШрдЯрдХ рддрдм рдЙрди рд╕рдВрджрд░реНрднреЛрдВ (рд╕реНрд╡рдпрдВ рдХреЗ) рдХреЛ рд╡рд╛рдВрдЫрд┐рдд Component рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЗрд╡рд╛ рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИред рдШрдЯрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдЙрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдЕрддрд┐-рдЬрдЯрд┐рд▓ рдФрд░ рдЕрддрд┐-рдХреНрд░рд┐рдпрд╛ред

рдмрд╕ рдЕрдкрдиреЗ рдкреНрд░рд╡реЗрд╢ рдШрдЯрдХреЛрдВ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдбрд╛рд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рдРрдк рдореЗрдВ рдЖрдпрд╛рдд рдХрд░реЗрдВ рдФрд░ рдХрд╣реАрдВ рдирд╣реАрдВред

@broweratcognitecdotcom рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдореБрджреНрджрд╛ рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рдореЗрдВ entryComponents рдХреЗ рд▓рд┐рдП рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреЗ рд╕рднреА рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЬрд┐рд╕реЗ рдЖрдк AppModule рдореЗрдВ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдРрд╕реЗ рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рдЙрддреНрд╕реБрдХрддрд╛ рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░реЗрдЧрд╛, рдЬреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдореБрджреНрджреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред

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

@lucasbasquerotto ... рдРрд╕реЗ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░реЗрдВ ... рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рд╣реИ, рдФрд░ рдпрд╣ рдмрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

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

@jmcclanahan @Dunos рдХреНрдпрд╛ рдЖрдкрдХреЛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдлреАрдЪрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдЗрдВрдЬреЗрдХреНрдЯрд░ рд╕рдВрджрд░реНрдн рдХреЛ рд╕реМрдВрдкрдирд╛ (рдореБрдЦреНрдп рдРрдк рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛) рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ рдПрдХ рд╕реЗрд╡рд╛ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ FactoryResolver рдХрд╣рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╣рд▓ рдХреА рдЧрдИ рдлреИрдХреНрдЯреНрд░реА рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред рдШрдЯрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЗрдВрдЬреЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╕рдВрджрд░реНрдн рд╣реЛрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдпрд╣ рдЖрдкрдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдЬреИрд╕рд╛ рд╣реЛрдЧрд╛ред

рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдореЙрдбреНрдпреВрд▓ рдЖрд▓рд╕реА рд▓реЛрдб рдирд╣реАрдВ рд╣реИ рдФрд░ рдореИрдВ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдореБрджреНрджреЗ рд╕реЗ рдЯрдХрд░рд╛ рд░рд╣рд╛ рд╣реВрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдм рддрдХ рдХрд┐ рдореБрдЭреЗ рдпрд╣рд╛рдВ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдпрд╛рдж рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ?

@ рдПрдЪ-рдЕрд░реЛрд░рд╛ рдореИрдВрдиреЗ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛, COMP рдХреЛ рджреЗрдЦрдХрд░ред _factories рдореЗрдВ, рд▓реЗрдХрд┐рди рдореБрджреНрджрд╛ рдпрд╣ рдерд╛ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрд┐рд▓реНрдб рддреНрд░реБрдЯрд┐ рдереА, рдЬреЛ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣реА рдереА

# 17168 рд╕реЗ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдирд╛ (рдЗрд╕ рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж)

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

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░реВрдЯ рдЗрдВрдЬреЗрдХреНрдЯрд░ рдХреЛ рдПрдВрдЯреНрд░реАрдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬреЛ рдмрдЪреНрдЪреЗ рдЗрдВрдЬреЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЬреНрдЮрд╛рдд рд╣реИрдВред

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

рдХреЛрдгреАрдп рд╕рдВрд╕реНрдХрд░рдг: 2.4.9

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди: рднрд▓реЗ рд╣реА рдпрд╣ рдХреЛрдгреАрдп рджреНрд╡рд╛рд░рд╛ рдЕрдкрдирд╛рдП рдЧрдП рдореЙрдбреНрдпреВрд▓рд░ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдЦрд┐рд▓рд╛рдл рдЬрд╛рддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧрддрд┐рд╢реАрд▓ рдШрдЯрдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдХреЗрд╡рд▓ рд░реВрдЯрдЗрдВрдЬреЗрдХреНрдЯрд░ рдХреЗ рдПрдВрдЯреНрд░реАрдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВ рд▓реЗрдЬрд╝реАрдореЙрдбреНрдпреВрд▓ рдХреЗ рдПрдВрдЯреНрд░реАрдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдФрд░ рд░реВрдЯрдЗрдВрдЬреЗрдХреНрдЯрд░ рдХреЛ рдмрд╛рдврд╝ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдирд░рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рднреА рдЖрдк рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддреЗ рд╣реИрдВред (рдЬреЛ LazyModule рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИ), рдкрд╣рд▓реЗ рдЗрдВрдЬреЗрдХреНрд╢рди рд╡рд╛рд▓реЗ entryComponents рдХреЛ рдРрд░реЗ рд╕реЗ рдорд┐рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдмрд╕ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

рдкреЗрдЬ рд▓реЛрдб рд╣реЛ рдЧрдпрд╛ рд╣реИ -> рд░реВрдЯ рдЗрдВрдЬреЗрдХреНрдЯрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдПрдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ LazyModule рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИ -> рдЪрд╛рдЗрд▓реНрдб рдЗрдВрдЬреЗрдХреНрдЯрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
RootInjector.entryComponents.append(childInjector.entryComponents)
рдХрд╣реАрдВ рдФрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ -> LazyModule рдЕрдм рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдирд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ред
RootInjector.entryComponents.destroyLastAppendedEntryComponents ()
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рд╕реБрдЭрд╛ рд╕рдХрддрд╛ рд╣реВрдБред

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

рдХреНрдпрд╛ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рд╢реЗрдбреНрдпреВрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рддрд▓рд╛рд╢рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬреИрд╕рд╛ рдХрд┐ рд▓реЛрдЧ рдКрдкрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@ravtakhar рдЖрдк рд╢рд╛рдпрдж рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмреИрдХрд▓реЙрдЧ рдореЗрдВ рд╣реИ рдФрд░ рдЗрд╕ рд╕рдордп рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд╣реАрдВ рджреА рдЧрдИ рд╣реИред

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

рдХреНрдпрд╛ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рд╢реЗрдбреНрдпреВрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рддрд▓рд╛рд╢рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬреИрд╕рд╛ рдХрд┐ рд▓реЛрдЧ рдКрдкрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ

@tmirun ... рдпрджрд┐ рдЖрдк рдРрд╕реЗ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ ... рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рд╣реИ, ... рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЕрдВрддрддрдГ рдореЙрдбреНрдпреВрд▓ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ moduleRef.componentFactoryResolver.resolveComponentFactory(entryComponentType) рдкрд░ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдКрдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдереА, рдФрд░ рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдХрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдРрдк рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рднреА рдПрдВрдЯреНрд░реАрдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреА рдШреЛрд╖рдгрд╛ рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕реЗ рдирд┐рд░реНрдпрд╛рдд рднреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддрд╛рдХрд┐ рд╣рд░ рдПрдХ рдЖрд▓рд╕реА рд▓реЛрдбреЗрдб рдореЙрдбреНрдпреВрд▓ рдЗрди рдШрдЯрдХреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░ рд╕рдХреЗред

рдПрдХрдорд╛рддреНрд░ рдЕрдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рд╡рд╣ entryComponent рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдХрд╕реНрдЯрдо ComponentFactoryResolver рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рд╕рдВрд╡рд╛рдж рднреА рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рд╕рд╛рд╡рдзрд╛рди : рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд░реВрдЯ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕рд┐рдВрдЧрд▓рдЯрди рдореЙрдбреНрдпреВрд▓ рдХреЗрд╡рд▓ рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдШрдЯрдХреЛрдВ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЖрдк рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд╛рдпрд▓реЙрдЧ рд╕реНрдкреЙрдирд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░, рдореЗрдВ рдЙрд╕ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЕрдВрддрддрдГ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдЕрдиреНрдп entryComponents рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЙрдХреНрдд рдореЙрдбреНрдпреВрд▓ рдХреЗ ComponentFactoryResolver рдХреЛ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

... рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд░реНрдерд┐рдд рд╕рдорд╛рдзрд╛рди рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреБрдЫ рдирдП рдПрдкреАрдЖрдИ + рдЖрдЗрд╡реА рдореЗрдВ рд╕рдорд░реНрдерди) ... рдЬреЗрд╕рди рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рдХрд╛рд░рдг http://www.youtube.com/watch?v=2wMQTxtpvoY&t=131m24s ... рдХреЛрдгреАрдп 7.2 рдореЗрдВред .. рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 7.2 рдХрд╛ рд╕рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ рд╕реАрдбреАрдХреЗ рдУрд╡рд░рд▓реЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЧреИрд▓рд░реА рдкреНрд▓рдЧрдЗрди рд╣реИ рдЬреЛ рд╕реАрдбреАрдХреЗ рдУрд╡рд░рд▓реЗ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рд░рдг рдореБрдЭреЗ рдЗрд╕реЗ рд░реВрдЯ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдХреНрдпрд╛ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХрд╛рдордХрд╛рдЬ рд╣реИ?

@MurhafSousli ... рдпреЛрдЧреНрдп, рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╣реИред рдмрд╛рдд рдХреЛ рд╕реМ рдмрд╛рд░ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ ... рдПрдХ рд░реВрдЯ рдЗрдВрдЬреЗрдХреНрдЯрд░ рд╣реИ рдФрд░ рдХреЛрдИ рднреА рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рдПрдХ рд╕реНрддрд░ рдЧрд╣рд░рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдпрд╣ рдирд╣реАрдВ рдорд╛рди рд╕рдХрддреЗ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рд░реВрдЯ рд╕реНрддрд░ рд╕реЗ рдЫреВрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдХрдИ рдмрд╛рд░ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЖрдк рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ... рддреЛ рдЖрдкрдХреЛ рд╡рд╣ рдореЙрдбреНрдпреВрд▓ рд╕рдВрджрд░реНрдн рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ ... рдФрд░ рдЖрдк рдЙрд╕рдХреЗ рдШрдЯрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред

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

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

рд╡реИрд╢реНрд╡рд┐рдХ PopupService

@Injectable({ providedIn: 'root' })
export class PopupService {
  constructor(
    private injector: Injector,
    private overlay: Overlay,
  ) {}

  open<T = any>(component: ComponentType<T>) { ... }
}

рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрд╡рд╛ рдХреЗрд╡рд▓ MyFeatureModule . рдореЗрдВ рдЖрд▓рд╕реА рд░реВрдк рд╕реЗ рднрд░реА рд╣реБрдИ рд╣реИ

@Injectable()
export class MyFeaturePopupService extends PopupService {}

рдПрдХ рдШрдЯрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдЬреЛ рдЖрд▓рд╕реА рд▓реЛрдб MyFeatureModule . рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ

@Component({ ... })
export class MyFeatureComponent {
  constructor(
    private myFeaturePopupService: MyFeaturePopupService,
  ) {}

  openPopup() {
    this.myFeaturePopupService.open(MyFeaturePopupComponent);
  }
}

рдЖрд▓рд╕реА рд▓реЛрдбреЗрдб рдореЙрдбреНрдпреВрд▓ рдХреА рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рднрд╛рд╖рд╛

@NgModule({
  imports: [MyFeatureRoutingModule],
  declarations: [
    MyFeatureComponent,
    MyFeaturePopupComponent,
  ],
  entryComponents: [MyFeaturePopupComponent],
  providers: [MyFeaturePopupService],
})
export class MyFeatureModule {}

рдХреЛрдгреАрдп 7 рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдиреЛрдЯ: рд╣рдорд╛рд░рд╛ рдХреЛрдб рдХреЛрдгреАрдп рд╕реАрдбреАрдХреЗ рдХреЗ Overlay рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕рдорд╛рди рд╣реИ (рдЗрд╕ рдзрд╛рдЧреЗ рдХреЗ рдЕрдиреНрдп рднрд╛рдЧреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ Injector рд╣реИ рдЬреЛ рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИ)ред

... рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд░реНрдерд┐рдд рд╕рдорд╛рдзрд╛рди рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреБрдЫ рдирдП рдПрдкреАрдЖрдИ + рдЖрдЗрд╡реА рдореЗрдВ рд╕рдорд░реНрдерди) ... рдХреЛрдгреАрдп 7.2 . рдореЗрдВ

... @ mlc-mlapis рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд░реНрдерд┐рдд рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

@cedvdb ... рдореИрдВрдиреЗ рдЕрднреА рдЙрд╕ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрд╖рдг рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ ... рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рд╕рдорд░реНрдерд┐рдд рдХреНрд╖рдорддрд╛ рдФрд░ рдлрд┐рд░ рдЗрд╕рдХреЗ рдХрд┐рд╕реА рднреА рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдШрдЯрдХ, рдПрдХ рдирд┐рд░реНрджреЗрд╢, ...

рд╡рд╣ рддрд░реАрдХрд╛ рдЖрдЬ рднреА рдЙрдкрд▓рдмреНрдз рд╣реИ ... рд▓реЗрдХрд┐рди рдХреЛрдгреАрдп рд╕реАрдПрд▓рдЖрдИ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдЖрд╡рд╢реНрдпрдХ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ... рднрд▓реЗ рд╣реА рдЖрдк рдЙрдиреНрд╣реЗрдВ рд░рд╛рдЙрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрднреА рднреА рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред

рдмрд╣реБрдд рдЦреВрдмред рдпрд╣ рдмрд╣реБрдд рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдерд╛ред

рдореИрдВрдиреЗ @angular/cdk рдкреЛрд░реНрдЯрд▓реНрд╕ рдФрд░ рдУрд╡рд░рд▓реЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдбрд╛рдпрд▓реЙрдЧ рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЧреВ рдХрд┐рдпрд╛: https://stackblitz.com/edit/cdk-dialog-example-p1ред рдпрд╣ рдореБрджреНрджрд╛ рднреА рдорд┐рд▓рд╛ред

@CWSpear рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдореБрдЭреЗ рдЕрдкрдиреЗ рдлреАрдЪрд░ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реЗрд╡рд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рдЧрдпрд╛ред рдмрд╣реБрдд рд╣реА рдЕрдЬреАрдм!

рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рд╣реИ?

рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рд╣реИ?

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

@NgModule({
  declarations: [LazyRootComponent, LazyEntryComponent],
  entryComponents:[LazyEntryComponent],
  providers:[LauncherWrapper],  //<---- reprovision here 
  imports: [
    CommonModule,
    LazyModRoutingModule
  ]
})
export class LazyModModule { }
@Injectable()
export class LauncherWrapper {
    constructor(private injector: Injector,  private launcher:ActualLaucherClass) {
    }

рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдЗрд╕рд▓рд┐рдП рд╣реБрдИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ @Injectable({providedIn: 'root'}) рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред рдЗрд╕реЗ @Injectable({providedIn: MyModule}) рдореЗрдВ рдмрджрд▓рдиреЗ рд╕реЗ рдпрд╣ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ред рдореИрдВ

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

@jmcclanahan рдФрд░ @dirkluijk рдХреЛ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдШрдВрдЯреЛрдВ рддрдХ рдЕрдкрдирд╛ рд╕рд┐рд░ рдЦреБрдЬрд▓рд╛ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЖрдкрдХреЗ рд╡рд┐рд╡рд░рдг рдиреЗ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХреАред

рдореИрдВ рдмрд╕ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИред
рдЗрд╕рдХреА рдЬрд░реВрд░рдд рд╣реИ @ рдХреЛрдгреАрдп/рд╕реАрдбреАрдХреЗ? рдХреНрдпреЛрдВ ?

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╣реИ рдпрджрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдПрдХреАрдХреГрдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рд╕реЗ рддреГрддреАрдп рдкрдХреНрд╖ рдХреЛрдб рд╣реИрдВ рдЬреЛ рдЖрдкрдХреА рд╡рд┐рд╢реЗрд╖ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗ рдмрд┐рдирд╛ ComponentFactoryResolver рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдореЗрд░рд╛ "рд╕рдорд╛рдзрд╛рди" рдпрд╣рд╛рдВ рд╣реИ: CoalescingComponentFactoryResolver ред рдпрд╣ рдПрдХ рдРрд╕реА рд╕реЗрд╡рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдРрдк рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ:

@NgModule({
 providers: [CoalescingComponentFactoryResolver]
})
class AppModule {
  constructor(coalescingResolver: CoalescingComponentFactoryResolver) {
    coalescingResolver.init();
  }
}

рдлрд┐рд░, рдЖрд▓рд╕реА рд▓реЛрдб рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЗрд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ ComponentFactoryResolver рдЙрджрд╛рд╣рд░рдг рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддрд░рд╣:

@NgModule({})
export class LazyModule {
  constructor(
    coalescingResolver: CoalescingComponentFactoryResolver,
    localResolver: ComponentFactoryResolver
  ) {
    coalescingResolver.registerResolver(localResolver);
  }
}

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

рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░, рдпрд╣ рд░реВрдЯ рдРрдк рдХреЗ ComponentFactoryResolver рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрдВрджрд░ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП resolveComponentFactory рд╡рд┐рдзрд┐ рдХреЛ рдкреИрдЪ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╣рд▓реЗ рд╕рднреА рдкрдВрдЬреАрдХреГрдд рдЖрд▓рд╕реА-рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдкрд░ рдШрдЯрдХ рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рд░реВрдЯ рдРрдк рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ (рдЪрдХреНрд░реАрдп рдХреЙрд▓ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╛рд░ рд╣реИ)ред

рддреЛ, рд╣рд╛рдБ, рдПрдХ рд╕реБрдВрджрд░ рд╕рдХрд▓ рд╣реИрдХред рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрднреА, рдХреЛрдгреАрдп 7 рдореЗрдВред рд╢рд╛рдпрдж рдпрд╣ рдХрд┐рд╕реА рдХреЗ рдХрд╛рдо рдХрд╛ рд╣реЛрдЧрд╛ред

@CWSpear рдХреЗ рд╕рдорд╛рдзрд╛рди рдкрд░ рдирд┐рд░реНрдорд╛рдг, рдореБрдЭреЗ рдШрдЯрдХ рдХреЗ рдкреНрд░рджрд╛рддрд╛ рд╕рд░рдгреА рдореЗрдВ рдмрд╕ рдЕрдкрдиреА рдореМрдЬреВрджрд╛ рдкреЙрдкрдЕрдк рд╕реЗрд╡рд╛ рдЬреЛрдбрд╝рдХрд░ рдпрд╣ рдХрд╛рдо рдорд┐рд▓ рдЧрдпрд╛ред рддреЛ рдореБрдЭреЗ рдПрдХ рдЕрд▓рдЧ "рдлреАрдЪрд░-рд╡рд┐рд╢рд┐рд╖реНрдЯ" рдкреЙрдкрдЕрдк рд╕реЗрд╡рд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред

рддреЛ рдЗрд╕ рддрд░рд╣:

@Component({
  ...
  providers: [PopupService]  //<---- generic PopupService
})
export class MedicationPortletComponent implements OnInit, OnDestroy {
...

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдЖрд▓рд╕реА-рд▓реЛрдбреЗрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ NgModule рдХреЗ рдкреНрд░рджрд╛рддрд╛ рд╕рд░рдгреА рдореЗрдВ рдкреЙрдкрдЕрдк рд╕реЗрд╡рд╛ рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕реЗ:

@NgModule({
  declarations: [
    ...
  ],
  imports: [
    ...
  ],
  providers: [PopupService] //<--- here's the PopupService!
})
export class SharedFeaturePatientModule {}

@jonrimmer рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди

@jonrimmer рдпрд╣ рдиреНрдпреВрдирддрдо рдШреБрд╕рдкреИрда рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореЗрд░реА рдФрд░ рдореЗрд░реА рдЯреАрдо рдХреА рдУрд░ рд╕реЗ рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж :)

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

//Ignore the syntax
CompA {
  openDialog() {//invoked on button click of this comp
    matDialog.open(FilterComponent);//works fine in case of lazy route but throws error when manually loaded
  }
}

ModuleA {//lazy module
  imports: [MatDialog, FilterModule],
  declaration: [CompA]
}

FilterModule {
  declaration: [FilterComponent],
  entryComponent: [FilterComponent]
}

FilterComponent { ...
}

@jmcclanahan @MartinJHItInstituttet @splincode

async showBar() {
    const module = await import("../bar/bar.module");
    const compiled = this._compiler.compileModuleAndAllComponentsSync(
      module.BarModule
    );
    compiled.ngModuleFactory.create(this._injector);

    let factory: any = compiled.componentFactories.find(
      componentFactory => componentFactory.selector === "app-dialog"
    );
    this.modal.show(factory.componentType);
  }

@ рдЬрд┐рдореАрд╢ рдпрд╣ рдЬреЗрдЖрдИрдЯреА рдореЛрдб рдХреЗ рд▓рд┐рдП рд╣реИред рдЖрдкрдХреЛ AOT рдореЛрдб рдХреЗ рд▓рд┐рдП import("../bar/bar.module.ngfactory") рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЬрд╣рд╛рдВ compileModuleAndAllComponentsSync рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ)ред

@mlc-mlapis
https://github.com/angular/angular/blob/master/aio/src/app/custom-elements/elements-loader.ts рд╕реЗ рдЕрддреНрдпрдзрд┐рдХ рдкреНрд░реЗрд░рд┐рдд

https://github.com/Jimmysh/ng-lazy-component-load

рдпрд╣ рдПрдУрдЯреА рдЬреЗрдЖрдИрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП рд╕рдлрд▓рддрд╛ред

import { InjectionToken, Type } from '@angular/core';
import { LoadChildrenCallback } from '@angular/router';

export const ELEMENT_MODULE_LOAD_CALLBACKS_AS_ROUTES = [
  {
    path: 'aio-foo',
    loadChildren: () => import('../foo/foo.module').then(mod => mod.FooModule)
  }
];

export interface WithCustomElementComponent {
  customElementComponent: Type<any>;
}

export const ELEMENT_MODULE_LOAD_CALLBACKS_TOKEN = new InjectionToken<Map<string, LoadChildrenCallback>>(
  'aio/elements-map'
);

export const ELEMENT_MODULE_LOAD_CALLBACKS = new Map<string, LoadChildrenCallback>();
ELEMENT_MODULE_LOAD_CALLBACKS_AS_ROUTES.forEach(route => {
  ELEMENT_MODULE_LOAD_CALLBACKS.set(route.path, route.loadChildren);
});

`` `рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдЖрдпрд╛рдд {рдХрдВрдкрд╛рдЗрд▓рд░, рдЗрдВрдЬреЗрдХреНрдЯ, рдЗрдВрдЬреЗрдХреНрдЯреЗрдмрд▓, NgModuleFactory, NgModuleRef, Type, ComponentFactory} '@angular/core' рд╕реЗ;
'@angular/router' рд╕реЗ { LoadChildrenCallback } рдЖрдпрд╛рдд рдХрд░реЗрдВ;

рдЖрдпрд╛рдд { ELEMENT_MODULE_LOAD_CALLBACKS_TOKEN } './lazy-component-registry' рд╕реЗ;

@ рдЗрдВрдЬреЗрдХреНрд╢рди рдпреЛрдЧреНрдп ({
рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛: 'рд░реВрдЯ'
})
рдирд┐рд░реНрдпрд╛рдд рд╡рд░реНрдЧ LazyComponentLoader {
рдирд┐рдЬреА рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рдирдХреНрд╢рд╛;
рдирд┐рдЬреА рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ = рдирдпрд╛ рдирдХреНрд╢рд╛>();

рдирд┐рд░реНрдорд╛рддрд╛ (
рдирд┐рдЬреА рдореЙрдбреНрдпреВрд▓рд░реЗрдл: NgModuleRef,
@рдЗрдВрдЬреЗрдХреНрдЯ (ELEMENT_MODULE_LOAD_CALLBACKS_TOKEN) рддрддреНрд╡ рдореЙрдбреНрдпреВрд▓рдкрд╛рде: рдорд╛рдирдЪрд┐рддреНрд░,
рдирд┐рдЬреА рд╕рдВрдХрд▓рдХ: рд╕рдВрдХрд▓рдХ
) {
this.modulesToLoad = рдирдпрд╛ рдирдХреНрд╢рд╛ (elementModulePaths);
}

рд▓реЛрдб (рдкрде: рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдЪрдпрдирдХрд░реНрддрд╛ ?: рд╕реНрдЯреНрд░рд┐рдВрдЧ): рд╡рд╛рджрд╛:{
рдЕрдЧрд░ (this.modulesLoading.has(path)) {
рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░реЗрдВред рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИред рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдкрде);
}

if (this.modulesToLoad.has(path)) {
  const modulePathLoader = this.modulesToLoad.get(path);
  const loadedAndRegistered = (modulePathLoader() as Promise<NgModuleFactory<any> | Type<any>>)
    .then(elementModuleOrFactory => {
      if (elementModuleOrFactory instanceof NgModuleFactory) {
        return elementModuleOrFactory;
      } else {
        return this.compiler.compileModuleAsync(elementModuleOrFactory);
      }
    })
    .then(elementModuleFactory => {
      const elementModuleRef = elementModuleFactory.create(this.moduleRef.injector);
      const factories: Map<any, ComponentFactory<any>> = (elementModuleRef.componentFactoryResolver as any)
        ._factories;
      if (selector) {
        const find = Array.from(factories.keys()).find(type => {
          const factory = factories.get(type);
          return factory.selector === selector;
        });
        if (find) {
          return find;
        } else {
          return Promise.reject(new Error(`not found selector:${selector}`));
        }
      }
      this.modulesToLoad.delete(path);
      return;
    })
    .catch(err => {
      this.modulesLoading.delete(path);
      return Promise.reject(err);
    });
  this.modulesLoading.set(path, loadedAndRegistered);
  return loadedAndRegistered;
}
return Promise.resolve();

}
}

``` typescript
  async showFoo() {
    await this.lazyComponentLoader.load('aio-foo');
    this.modal.show(FooDialogComponent);
  }
  async showFoo2() {
      const aaa = await this.lazyComponentLoader.load('aio-foo', 'app-dialog');
    this.modal.show(aaa);
  }

@ рдЬрд┐рдореАрд╢ ... рдлрд┐рд░ рд╕рд╣реАред рдпрд╣ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ JIT рдореЛрдб рдореЗрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

constructor(private compiler: Compiler) {}
...
if (elementModuleOrFactory instanceof NgModuleFactory) {
   return elementModuleOrFactory;
} else {
   return this.compiler.compileModuleAsync(elementModuleOrFactory);
}

@ mlc-mlapis AOT NgModuleFactory рд╣реЛрдЧрд╛ред рдЖрдк https://github.com/Jimmysh/ng-lazy-component-load рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

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

рд░реЗрдкреЛ рд▓рд┐рдВрдХ: https://github.com/Jonathan002/route-master-example
рдбреЗрдореЛ рдпреВрдЖрд░рдПрд▓: https://jonathan002.github.io/route-master-example/

FWIW, @CWSpear рдФрд░ @dirkluijk рдХреЗ рд╕рдорд╛рди рд╣реА, рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рд╕реЗ providedIn: 'root' рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ (рдПрдХ рдЖрд▓рд╕реА рд▓реЛрдбреЗрдб рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдФрд░ entryComponent рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░) рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕реЗрд╡рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рдореЗрд░реА рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ providers рдореЗрдВред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛/рдПрдХрдорд╛рддреНрд░ рджреЛрд╖ рдпрд╣ рд╣реИ рдХрд┐ рд╕реЗрд╡рд╛ рдЕрдм рдкреЗрдбрд╝-рд╣рд┐рд▓рд╛рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред

providedIn: MyLazyModule рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд░рд┐рдкрддреНрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рд╣реБрдИрдВред

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

рдкреБрд╖реНрдЯрд┐ рдХреА рдпрд╣ рдЕрднреА рддрдХ рдХреЛрдгреАрдп 8.2.0 рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдЪреВрдВрдХрд┐ рдУрдкреА 2.5 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдПрдВрдЧреБрд▓рд░ рдХрд╛ рдкрд░рд┐рджреГрд╢реНрдп рдмрд╣реБрдд рдмрджрд▓ рдЧрдпрд╛ рдерд╛, рдФрд░ рдПрдВрдЧреБрд▓рд░ рдордЯреЗрд░рд┐рдпрд▓ 2 рдПрдВрдЧреБрд▓рд░ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдмрди рдЧрдпрд╛ рдерд╛ред

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

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

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдУрдкреА рдХреЗ рдлреАрдЪрд░ рдЕрдиреБрд░реЛрдз рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рддрд╛рдХрд┐ ComponentFactoryResolver рдПрдХ рдЙрдк рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЖрд▓рд╕реА рд▓реЛрдб, рдПрдХ рддрд░рдл рдпрд╛ рджреВрд╕рд░реЗ рдореЗрдВ рдШреЛрд╖рд┐рдд рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдШрдЯрдХ "рджреЗрдЦ" рд╕рдХреЗред app.module рдореЗрдВ рдПрдХ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкреНрд░рд╡реЗрд╢ рдШрдЯрдХ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрджрд╕реВрд░рдд рд╣реИред

рдКрдкрд░ рдмрддрд╛рдП рдЕрдиреБрд╕рд╛рд░ рдЧрдВрджреЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛: 1. рдбреЛрдо, 2. рдРрдк.рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдШрдЯрдХ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдиреАрдЪреЗ рдПрдХ рдФрд░ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░реВрдВрдЧрд╛, рдХрдо рдЧрдВрджрд╛ред

рддреАрд╕рд░рд╛ рд╕рдорд╛рдзрд╛рди, рдХрдо рдЧрдВрджрд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ рдЖрд▓рд╕реА рд▓реЛрдб рдХрд┐рдП рдЧрдП рдПрдХрд╛рдзрд┐рдХ рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдЭрд╛ рд╕реЗрд╡рд╛рдПрдВ рд╣реИрдВред

export interface DataComponent {
    data: any;
}

/**
 * Display an NG component in a dialog, and this dialog has not need to answer but close.
 */
@Injectable()
export class DataComponentDialogService {
    modalRef: MatDialogRef<DataComponentDialog>;

    constructor(private dialog: MatDialog) { }

    open(title: string, externalComponentType: Type<DataComponent>, componentData: any, autofocus = true): Observable<any> {
        const isSmallScreen = window.innerWidth < 640 || window.innerHeight < 640;
        this.modalRef = this.dialog.open(DataComponentDialog,
            {
                disableClose: true,
                minWidth: isSmallScreen ? '98vw' : undefined,
                autoFocus: autofocus,
                data: {
                    title: title,
                    externalComponentType: externalComponentType,
                    componentData: componentData,
                    isSmallScreen: isSmallScreen
                }
            });

        return this.modalRef.afterClosed();

    }

}

рдпрд╣ рд╕реЗрд╡рд╛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреНрд░рд╡реЗрд╢ рдШрдЯрдХреЛрдВ рдХреЛ рдЖрд▓рд╕реА рд▓реЛрдб рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддреА рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдЖрд▓рд╕реА рд▓реЛрдб рдХрд┐рдП рдЧрдП рдХреБрдЫ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд▓рд╛рдЧреВ рдХреБрдЫ рдкреНрд░рд╡реЗрд╢ рдШрдЯрдХ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЗрд╕ рд╕реЗрд╡рд╛ рдХреА рдХрдХреНрд╖рд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рд╣реИ:

import { DataComponentDialogService } from '../_ui_services/dataComponentDialog.component';

@Injectable()
export class LazyComponentDialogService extends DataComponentDialogService {
    constructor(dialog: MatDialog) {
        super(dialog);
    }
}

рдЪреВрдВрдХрд┐ LazyComponentDialogService рдЖрд▓рд╕реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдЙрд╕реА рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдШрдЯрдХ рдХреЛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИред

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

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдЗрд╡реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (9.0.0-рдЕрдЧрд▓реЗ 7 рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг) рдХреЗ рдХрд╛рд░рдг рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрдм рдПрдВрдЧреБрд▓рд░ 9 рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдЖрдк рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рдПрдХ рдЖрд▓рд╕реА рд▓реЛрдбреЗрдб рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рдШрдЯрдХ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдЗрд╡реА рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдм рдкреНрд░рд╡реЗрд╢ рдШрдЯрдХ рдШреЛрд╖рдгрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдЗрд╡реА рдХреЛ рдПрдХ рдЕрд▓рдЧ рдШрдЯрдХ рдХрд╛рд░рдЦрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ред рдШрдЯрдХ рдХрд╛рд░рдЦрд╛рдиреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЖрдЗрд╡реА (?) рдХреЗ рд╕рд╛рде рдШрдЯрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИред рдПрдХ рдмрд╛рд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдШрдЯрдХ рдкреНрд░рдХрд╛рд░ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдШрдЯрдХ рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдлрд┐рд░ рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрд╕ рдпрд╣реА рдореЗрд░реА рдЫрд╛рдк рд╣реИред рдирдордХ рдХреЗ рджрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рд╡рдЪрди рд▓реЗ рд▓реЛ

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

рдпрд╣ рдШреЛрд▓ рд╕рд╛рдл рд╣реИ рдФрд░ рдЖрд▓рд╕реА рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рддрд╛ рд╣реИред

@NgModule({
  declarations: [
    ModalComponent,
    ... more dynamic components ...
  ],
  entryComponents: [
     ModalComponent,
    ... more dynamic components ...
  ]
})
export class DynamicModule {

}

рдРрдк рдореЙрдбреНрдпреВрд▓:

@NgModule({
   declarations: [
      AppComponent
   ],
   imports: [
      BrowserModule,
      AppRoutingModule,
      BrowserAnimationsModule,
      DynamicModule
   ],
   providers: [],
   bootstrap: [
      AppComponent
   ]
})
export class AppModule { }

@ рдкрд┐рдХреНрд╕реЗрд▓рдмрд┐рдЯреНрд╕-рдПрдордХреЗ рдЬреЛ рд╕рднреА рдЧрддрд┐рд╢реАрд▓ рдШрдЯрдХреЛрдВ (рдЬреИрд╕реЗ рдореЛрдбрд▓ рдФрд░ рдЗрд╕реА рддрд░рд╣) рдХреЛ рдЙрддреНрд╕реБрдХ рд▓реЛрдб рдХрд░ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдмрд┐рдВрджреБ рдЙрдиреНрд╣реЗрдВ рдРрдк рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓реЛрдб рдХреЛ рдзреАрдорд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд▓рд╕реА рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬреИрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдврд╝рддрд╛ рд╣реИ ), рдареАрдХ рдЙрди рдШрдЯрдХреЛрдВ рдХреА рддрд░рд╣ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред

рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрд▓рд╕реА рд▓реЛрдб ComponentA рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЖрд▓рд╕реА рд▓реЛрдб рдЧрддрд┐рд╢реАрд▓ ComponentB $ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ ComponentA рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ ComponentB рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ рддреЛ рдЖрдк $#$ ComponentAModule ComponentBModule рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрджрд░реНрд╢ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рд░рд╣ рд╕рдХрддрд╛ рд╣реВрдВред

рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ (рдореЗрд░реА рд░рд╛рдп рдореЗрдВ) рдЬрдм ComponentA рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ ComponentB рд▓реЛрдб рд╣реЛ рдЬрд╛рдПрдЧрд╛ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ ComponentB рдПрдХ рдореЛрдбрд▓ рд╣реИ рдФрд░ ComponentA рдХрд┐рд╕реА рд╕реЗрд╡рд╛ рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ showModal() рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕реЗрд╡рд╛ ComponentB рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рд▓реЛрдб рд╣реЛрддреА рд╣реИ, ComponentA рдЙрд╕реЗ рдирд╣реАрдВ рдкрддрд╛ рд╣реЛрдЧрд╛ред

рдЕрдм рдореИрдВ рдЬреЛ рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ ComponentB рд╕рдВрджрд░реНрдн рдХреЛ рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ showModal(ComponentB) , рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐ ComponentA рдЕрдм рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ ComponentB рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдмреБрд░рд╛ рд╣реИ (рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдХреЛ рдШрдЯрдХ рд╕рдВрджрд░реНрдн рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛)ред

рдпрджрд┐ рдПрдВрдЯреНрд░реА рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдкрд▓рдмреНрдз рдереЗ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ), рдЬреЛ рдЗрд╕реЗ рд╣рд▓ рдХрд░реЗрдЧрд╛ (рд╢рд╛рдпрдж рдХреЛрдгреАрдп рдХреЗ рдкрд╛рд╕ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ ComponentA рдПрдХ рд╕реЗрд╡рд╛ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ ComponentB рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ ComponentAModule рдкрд░реЛрдХреНрд╖ рд░реВрдк рд╕реЗ рдЖрдпрд╛рдд рдХрд░реЗрдВ ComponentBModule , рдФрд░ рдпрджреНрдпрдкрд┐ рдЗрд╕рдХрд╛ рдЙрди рдШрдЯрдХреЛрдВ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╛рдВрдЫрдиреАрдп рдкреНрд░рднрд╛рд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд╕рдВрджрд░реНрдн рдЖрдпрд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЖрдпрд╛рдд рдХрд╛ рдХрд╛рд░рдг рдЙрдиреНрд╣реЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдирд╛ рдирд╣реАрдВ рд╣реИ , рдореИрдВ рдЗрд╕реЗ рдПрдХ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рджреЗрдЦреВрдВрдЧрд╛, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдареАрдХ рд░рд╣реЗрдЧрд╛)ред

рдореИрдВрдиреЗ (рдЕрднреА рддрдХ) @jonrimmer рд╕реБрдЭрд╛рд╡ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╢рд╛рдЬрдирдХ рд▓рдЧрддрд╛ рд╣реИред

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ ComponentA ComponentB рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХреЗрд╡рд▓ ComponentA рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ:
ModuleA рдореЗрдВ рдШрдЯрдХ ComponentA1 , ComponentA2 рд╣реИред
ComponentA1 html рдореЗрдВ рд╕рдВрджрд░реНрдн ComponentB (рдореЙрдбреНрдпреВрд▓ рдореЗрдВ ModuleB ), рд▓реЗрдХрд┐рди ComponentA2 рдирд╣реАрдВ рд╣реИред
ModuleB рдХреЗрд╡рд▓ ComponentA1 рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрд▓рд╕реА рд▓реЛрдб рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрджрд┐ ComponentA2 рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдпрд╣ рд╣реЛрдо рдкреЗрдЬ рдкрд░ рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рдлрд┐рдЯ рд╣реЛрдЧрд╛ред рдбреИрд╢рдмреЛрд░реНрдб рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдбреИрд╢рдмреЛрд░реНрдб рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ (рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ), рддреЛ рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

@jonrimmer рдореБрдЦреНрдп ComponentFactoryResolver рдХреЗ рд░рд┐рдЬреЙрд▓реНрдпреВрд╢рдирдХрдВрдкреЛрдиреЗрдВрдЯ рдлреИрдХреНрдЯреНрд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдФрд░ рдкрд╣рд▓реЗ рдкрдВрдЬреАрдХреГрдд рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рд╛рди рд╡рд┐рдЪрд╛рд░ред

рдпрд╣ рдкреНрд░рд╡реЗрд╢ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд░реВрдЯ рдореЗрдВ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореИрдВ рдРрд╕реА рд╕реЗрд╡рд╛ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдЬреЛ рдХреЗрд╡рд▓ рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореБрдЭреЗ рдПрдХ StaticInjectorError рдорд┐рд▓рд╛ред рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

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

рдХрд┐рд╕реА рднреА рджрд░ рдкрд░, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдореМрдЬреВрджрд╛ рдХреЛрдгреАрдп 8.2 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЖрдЗрд╡реА рдХреЛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рд╕рднреА рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рдореЗрдВ Overlay рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди:
рдЖрдкрдХреЛ рдлреИрдХреНрдЯреНрд░реА рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдХреЛ ComponentPortal рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдЗрд╕ рддрд░рд╣ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛

@Injectable()
export class OverlayService {

  constructor(
    private overlay: Overlay,
    private componentFactoryResolver: ComponentFactoryResolver
  ) {
  }

  open<T>(component: ComponentType<T>) {
    const overlayRef = this.overlay.create();

    const filePreviewPortal = new ComponentPortal(component, null, null, this.componentFactoryResolver);

    overlayRef.attach(filePreviewPortal);
  }
}

рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЖрд▓рд╕реА рд▓реЛрдбреЗрдб рдореЙрдбреНрдпреВрд▓ рдореЗрдВ OverlayService рдХрд╛ рднреА рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред OverlayService рдХреЛ рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ ComponentFactoryResolver рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ OverlayService рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ

@NgModule({
  declarations: [
     SomeComponent,
  ],
  entryComponents: [
    SomeComponent,  // <-------- will be opened via this.overlayService.open(SomeComponent)
  ],
  providers: [
    OverlayService, // <--------
  ]
})
export class LazyLoadedModule {}

@mixrich рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдХрд░реЗрдЧрд╛ [рдореЗрд░реЗ рдРрдк рдореЗрдВ, рдореИрдВ рдРрд╕рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рддрдм рддрдХ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдореБрдЭреЗ рд▓реЙрдЧрдЖрдЙрдЯ рдЬреИрд╕реА рдХрд┐рд╕реА рдШрдЯрдирд╛ рдкрд░ рд╕рднреА рдореЛрдбрд▓ рд╕рдВрд╡рд╛рдж рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА] рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рд╣рд░ рдмрд╛рд░ рдУрд╡рд░рд▓реЗ рд╕реЗрд╡рд╛ рдХреЛ рддреБрд░рдВрдд рдЪрд╛рд▓реВ рдХрд░ рджреЗрдЧрд╛ рдЬрдм рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдпрд╛рдиреА рдРрдк рдореЗрдВ рд╕реЗрд╡рд╛рдУрдВ рдХреА рддрд░рд╣ рдПрдХ рднреА рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдХреНрдпреЛрдВрдХрд┐ рдУрд╡рд░рд▓реЗ рд╕реЗрд╡рд╛ рдХрд╛ рдХреЛрдИ рд╕рд┐рдЧреНрдирд▓рдЯрди рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдпрд╣ рдЬрд╛рдирдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдХрд┐рддрдиреЗ рдореЛрдбрд▓ рдбрд╛рдпрд▓реЙрдЧ рдЦреЛрд▓реЗ рдЧрдП рд╣реИрдВред

рдмреЗрд╢рдХ, рдпрд╣ рдРрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рд╣реИред

@mixrich рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдХрд░реЗрдЧрд╛ [рдореЗрд░реЗ рдРрдк рдореЗрдВ, рдореИрдВ рдРрд╕рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рддрдм рддрдХ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдореБрдЭреЗ рд▓реЙрдЧрдЖрдЙрдЯ рдЬреИрд╕реА рдХрд┐рд╕реА рдШрдЯрдирд╛ рдкрд░ рд╕рднреА рдореЛрдбрд▓ рд╕рдВрд╡рд╛рдж рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА] рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рд╣рд░ рдмрд╛рд░ рдУрд╡рд░рд▓реЗ рд╕реЗрд╡рд╛ рдХреЛ рддреБрд░рдВрдд рдЪрд╛рд▓реВ рдХрд░ рджреЗрдЧрд╛ рдЬрдм рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдпрд╛рдиреА рдРрдк рдореЗрдВ рд╕реЗрд╡рд╛рдУрдВ рдХреА рддрд░рд╣ рдПрдХ рднреА рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдХреНрдпреЛрдВрдХрд┐ рдУрд╡рд░рд▓реЗ рд╕реЗрд╡рд╛ рдХрд╛ рдХреЛрдИ рд╕рд┐рдЧреНрдирд▓рдЯрди рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдпрд╣ рдЬрд╛рдирдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдХрд┐рддрдиреЗ рдореЛрдбрд▓ рдбрд╛рдпрд▓реЙрдЧ рдЦреЛрд▓реЗ рдЧрдП рд╣реИрдВред

рдмреЗрд╢рдХ, рдпрд╣ рдРрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ ModalDialogModule рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ OverlayService рдФрд░ рдЬрдм рдореИрдВ OverlayService.open(SomeComponent) рдкрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдЯреЗрдореНрдкреЗрдЯ рднреА рдмрдирд╛рддрд╛ рд╣реИ, SomeComponent рдЕрдВрджрд░ рдбрд╛рд▓рддрд╛ рд╣реИ рдпрд╣ рдФрд░ рдХреБрдЫ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рд╣рд╛рдпрдХ рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ (рдХрд░реАрдм рдФрд░ рд╕рдлрд▓рддрд╛ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП), рдШрдЯрдХ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдореИрдиреБрдЕрд▓ close рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЬрдм рдореБрдЭреЗ рдЕрдкрдиреЗ LazyModule рдореЗрдВ рдореЛрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдореБрдЭреЗ OverlayService рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреЗрд╡рд▓ ModalDialogModule рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВрдиреЗ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкрд╛рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╣рдореЗрд╢рд╛ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореЛрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ ModalDialogModule рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреИрд╕реЗ рдЖрдк рд╣рдореЗрд╢рд╛ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд░реВрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ ReactiveFormModule рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛

рдореБрдЭреЗ рдпрд╣ рдХреЛрдгреАрдп 8.3.6 рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдВрдЯреНрд░реА рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ (рдореИрдЯ рдбрд╛рдпрд▓реЙрдЧреНрд╕) рдХреЗ рд╕рд╛рде рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬреЛ рдЕрдЧрд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЙрдбреНрдпреВрд▓ рдПрдВрдЯреНрд░реА рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рддреЛ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ рдЦреЛрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рддреЛ рдХрдВрд╕реЛрд▓ рд▓реЙрдЧ рдореЗрдВ MyCustomDialog рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдлрд╝реИрдХреНрдЯрд░реА рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрд╛ред

рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ NgModule рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдмрдирд╛рдирд╛ рд╣реИ рдЬреЛ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреНрд░рд╡реЗрд╢ рдШрдЯрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИред рдлрд┐рд░ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдРрдк рдореЙрдбреНрдпреВрд▓ NgModule рд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВред

@NgModule({
    declarations: [
        MyCustomDialogComponent
    ],
    imports: [
        CommonModule
    ],
    exports: [
        MyCustomDialogComponent
    ]
    // no need to add the dialog component to entryComponents here.
})
export class MyCustomModule {
    static getEntryComponents() {
        const entryComponents = [];
        entryComponents.push(MyCustomDialogComponent);
        return entryComponents;
    }
}

import {MyCustomModule} from 'my-custom-library'; // import library from node_modules

@NgModule({
    declarations: [
        AppComponent
    ],
    imports: [
        BrowserModule,
        AppRoutingModule,
        BrowserAnimationsModule,
        MyCustomModule
    ],
    providers: [],
    bootstrap: [AppComponent],
    entryComponents: [].concat(MyCustomModule.getEntryComponents())
})
export class AppModule {
}

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

@ asmith2306 рдЖрдк рд╕реНрдкреНрд░реЗрдб рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ? рдпрд╣ рдмрджрд╕реВрд░рдд рд▓рдЧ рд░рд╣рд╛ рд╣реИ

@ asmith2306 рдЖрдк рд╕реНрдкреНрд░реЗрдб рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ? рдпрд╣ рдмрджрд╕реВрд░рдд рд▓рдЧ рд░рд╣рд╛ рд╣реИ

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

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ --prod рдореЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рднрд▓реЗ рд╣реА рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реЛ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдПрдХ рдПрдирдЬреАрдПрдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рдПрдВрдЯреНрд░реА рдХреЙрдореНрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВ рдПрдХ рдШрдЯрдХ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ, рдФрд░ рд╡рд╣ рдореЙрдбреНрдпреВрд▓ рдореЗрд░реЗ рдРрдк рдореЗрдВ рдЖрд▓рд╕реА рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдВрдЯреНрд░реА рдХреЙрдореНрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдРрдкреНрд╕ рдПрдВрдЯреНрд░реА рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЛрдИ рдФрд░ рдХрд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдЖрдЧреЗ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдХрд┐рд╕реА рднреА NgModule рдХреЗ entryComponents рдореЗрдВ рдХреЛрдИ рднреА рдШрдЯрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ app рдореЙрдбреНрдпреВрд▓ рдХреЗ entryComponents рдореЗрдВ рд╡рд╛рдЗрдВрдб рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдлрд┐рд▓рд╣рд╛рд▓ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рддреЛ рд╣рдо рдпрд╣рд╛рдВ рдирд╣реАрдВ рд╣реЛрддреЗред

@broweratcognitecdotcom рд╡рд┐рднрд┐рдиреНрди рдЗрдВрдЬреЗрдХреНрд╢рди рд╕реНрддрд░реЛрдВ рд╕реЗ рд╕рдВрдШрд░реНрд╖реЛрдВ рдФрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

@mlc-mlapis рдЖрджреЗрд╢ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдкрд╣рд▓реЗ рдЖрдУ, рдкрд╣рд▓реЗ рдкрд╛рдУ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@ mlc-mlapis рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрджрд┐ рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдХреЛрдВ рдХрд╛ рдПрдХ рд╣реА рдирд╛рдо рд╣реИ? рдкрд╣рд▓рд╛ рдореИрдЪ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдореИрдЪ рд╣реЛрдиреЗ рдкрд░ рддреНрд░реБрдЯрд┐ред рдореИрдВ рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде рд░рд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рд╡реЗрд╢ рдШрдЯрдХ рдирд╛рдо рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@broweratcognitecdotcom рд╣рд╛рдп, рд╣рд╛рдБред рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╕рднреА рд░реВрдкреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

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

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

@Airblader рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВред рдпрд╣ рдЗрддрд┐рд╣рд╛рд╕ рдХреА рдмрд╕ рдПрдХ рдЫреЛрдЯреА рд╕реА рдпрд╛рдж рдереАред рдореИрдВ

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдЬреВрдЭ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рд╡рд╣ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: https://github.com/angular/angular/issues/14324#issuecomment -481898762

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдХреЗрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред рдЬреЙрдиреНрд░рд┐рдорд░ рд╕реЗ рдХреБрдЫ рдХреЛрдб рдХреЙрдкреАред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ Angular 9 рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрднреА рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк @aiao/lazy-component рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдирдореВрдирд╛ рдХреЛрдб рдпрд╣рд╛рдБ
https://github.com/aiao-io/aiao/tree/master/integration/lazy-component

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдгреАрдп v9 рдЪрд▓ рдЖрдЗрд╡реА рд▓рддрд╛ рдореЗрдВ рддрдп рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЕрднреА рднреА рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдиреНрдпреВрдирддрдо рдкреБрдирд░реБрддреНрдкрд╛рджрди рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред Thnx!

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

рд╣рдорд╛рд░реА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рд▓реЙрдХрд┐рдВрдЧ рдиреАрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВред

_рдпрд╣ рдХреНрд░рд┐рдпрд╛ рдПрдХ рдмреЙрдЯ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреА рдЧрдИ рд╣реИред_

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

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

pkozlowski-opensource picture pkozlowski-opensource  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

vladimir-ivanov picture vladimir-ivanov  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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