Angular: рдЬрдм рдлреБрд▓рдЯреЗрдореНрдкрд▓реЗрдЯ рдЯрд╛рдЗрдк рдЪреЗрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ @dynamic рдХрд╛ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдбреЗрдХреЛрд░реЗрдЯрд░реНрд╕ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 30 рдЕрдкреНрд░реИрд▓ 2018  ┬╖  106рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: angular/angular

рдореИрдВ рдПрдХ рдЬрдорд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ ...


[X] Regression (a behavior that used to work and stopped working in a new release)
[ ] Bug report  <!-- Please search GitHub for a similar issue or PR before submitting -->
[ ] Performance issue
[ ] Feature request
[ ] Documentation issue or request
[ ] Support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question
[ ] Other... Please describe:

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

рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рддреЗ рд╕рдордп рдФрд░ skipTemplateCodegen рдФрд░ strictMetadataEmit рд╕реЗ true рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдЖрдк ngModule рд╕рдЬреНрдЬрд╛ рдЙрджрд╛рд╣рд░рдг RouterModule.forChild([]) рдЕрдВрджрд░ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ Function calls are not supported in decorators but 'RouterModule' was called.

fullTemplateTypeCheck рд╕реЗ true рдЬреЛрдбрд╝рдиреЗ рдкрд░ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, @dynamic рдХрд╛ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИред

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдирд╣реАрдВ рд╣реБрдИ, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдпрд╣ @dynamic рд╕рд╛рде рджрдмрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдиреНрдпреВрдирддрдо рдкреНрд░рдЬрдирди

рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдБ

import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';

@NgModule({
  imports: [
    RouterModule.forChild([])
  ]
})
export class LibModule { }

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде tsconfig рд╕реЗрдЯ рдХрд░реЗрдВ;

  "angularCompilerOptions": {
    "skipTemplateCodegen": true,
    "strictMetadataEmit": true
  }

рдЬрдм рдЯреНрд░рд╛рдВрд╕рдкреНрд▓рд╛рдирд┐рдВрдЧ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░реЗрдЧрд╛;

Error during template compile of 'LibModule' Function calls are not supported in decorators but 'RouterModule' was called.

"fullTemplateTypeCheck": true рдЬреЛрдбрд╝рддреЗ рд╕рдордп рдзреНрдпрд╛рди рджреЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдереЛрдбрд╝реЗ рдЕрдЬреАрдм рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)

рдкреНрд░рдЬрдирди рдкреНрд░рддрд┐рдирд┐рдзрд┐: https://github.com/alan-agius4/angular-issue-23609

рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рдгрд╛ / рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдХреНрдпрд╛ рд╣реИ?

NG 5 рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реБрдИ

рд╡рд╛рддрд╛рд╡рд░рдг


Angular version: 6.0.0-rc-6
<!-- Check whether this is still an issue in the most recent Angular version -->

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ:
https://github.com/dherges/ng-packagr/issues/822
https://github.com/dherges/ng-packagr/issues/778
https://github.com/dherges/ng-packagr/issues/727
https://github.com/dherges/ng-packagr/issues/765
https://github.com/dherges/ng-packagr/issues/767
https://github.com/dherges/ng-packagr/issues/885

P5 compiler ve fixed by Ivy high confirmed triage #1 bufix

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

рд╡рд╛рд░реНрдб рдХреЗ repro рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: @wardbell

angularCompilerOptions рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрд┐рд▓реНрдб рд╕рдлрд▓ / рд╡рд┐рдлрд▓ рд╣реЛрдЧрд╛ред рдЗрд╕ рд░реЗрдкреНрд░реЛ рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдЬреЛрдбрд╝рд╛

рд╕рдлрд▓рддрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ

    "skipTemplateCodegen": true,
    "strictMetadataEmit": true,
    "fullTemplateTypeCheck": true
    "skipTemplateCodegen": false,
    "strictMetadataEmit": false
    "skipTemplateCodegen": false,
    "strictMetadataEmit": true,
    // fullTemplateTypeCheck omitted (= default value)

рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ

    "skipTemplateCodegen": true,
    "strictMetadataEmit": true,
    // fullTemplateTypeCheck omitted (= default value)
    "skipTemplateCodegen": true,
    "strictMetadataEmit": false
    // fullTemplateTypeCheck omitted (= default value)

рдЕрд╡рд▓реЛрдХрди

рд╡рд╛рд░реНрдб рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, "skipTemplateCodegen": true рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ "fullTemplateTypeCheck": true рдХреЛ рднреА ngc рдХреЗ рд╕рд╛рде рд╕рдлрд▓рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рд╛рдЗрдб рдиреЛрдЯреНрд╕ / рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░

рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ "рдПрдУрдЯреА рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ" ( рдХрдВрдкрд╛рдЗрд▓рд░ рдбреЙрдХреНрд╕ рдореЗрдВ "рд╕реНрдерд┐рд░ рдореВрд▓реНрдп рдкреБрдирд░реНрдЬреАрд╡рди рдХреА " ) рддрдХ рдЬрд╛рддреА рд╣реИред Imo, strictMetadataEmit рд╡рд┐рдХрд▓реНрдк рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреБрдЫ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ рдпрд╛ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рд╕рдордЭ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдЯреВрдЯреА рд╣реБрдИ рд╣реИ broken

рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рд╕реЗ рдореИрдВ рдпрд╣ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдЕрдХреНрд╕рд░ static forRoot(): ModuleWithProviders рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдХреЛрдб рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ "рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдпреЛрдЧреНрдп" рдмрди рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдмрдирддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░рд┐рдкреЛрдЬрд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореИрдВ рдХреЛрдб рдХреА рдХреБрдЫ рдЕрд╕реНрдкрд╖реНрдЯ рдпрд╛рджреЛрдВ рдкрд░ рдЕрдЯрдХрд▓реЗрдВ рднреА рдирд╣реАрдВ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдХрд╛рдо рдХрд░рддреЗ / рдЧреИрд░-рдХрд╛рдо рдХрд░рддреЗ рджреЗрдЦрд╛ рд╣реИред

рдХреНрдпрд╛ рдПрдирдЬреАрд╕реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдЬреЛ рдПрдирдЬреАрд╕реА рд╕реЛрд░реНрд╕ рдХреЛрдб рдореЗрдВ рд▓рд╛рдЗрди рдирдВрдмрд░ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрд░рд░ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред

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

рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд░реЗрдкреЛ рдпрд╣ рдкреНрд░рдЬрдирди рдХрд░рддрд╛ рд╣реИред

рдореЗрд░реЗ рддреНрд╡рд░рд┐рдд рдбрд┐рдмрдЧ рд╕реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ static_reflector members / statics рдареАрдХ рд╕реЗ рд╣рд▓ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП RouterModule forChild рд╕рджрд╕реНрдп рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред

image

рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореИрдВрдиреЗ fullTemplateTypeCheck lib/tsconfig.json рдФрд░ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рд╛ред

рдореЗрд░рд╛ рддрд┐рд░рд╕реНрдХрд╛рд░:

git clone https://github.com/johnpapa/angular-ngrx-data.git ngrx-data-FAIL
cd ngrx-data-FAIL
git checkout ng-v6-FAIL
npm install

рдЕрдм ngrx-data рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕

npm run build-lib

рдмрд┐рд▓реНрдб рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред рдХрдВрд╕реЛрд▓ рдХрд╣рддрд╛ рд╣реИ

BUILD ERROR
Error during template compile of 'NgrxDataModule'
  Function calls are not supported in decorators but 'StoreModule' was called.
  ...

NgrxDataModule ( FooModule рдЫреЛрдбрд╝рдХрд░) рдореЗрдВ рджреЛ ngrx рдЖрдпрд╛рддреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдЗрд╕ рдмрд╛рд░ рдмрд┐рд▓реНрдб рд╕рдлрд▓ рд╣реБрдЖ рдФрд░ dist рдореЗрдВ рдПрдХ рдкреИрдХреЗрдЬ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ FooModule рдмрд╕ рдареАрдХ рд╣реИред

рд╡рд╛рд░реНрдб рдХреЗ repro рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: @wardbell

angularCompilerOptions рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрд┐рд▓реНрдб рд╕рдлрд▓ / рд╡рд┐рдлрд▓ рд╣реЛрдЧрд╛ред рдЗрд╕ рд░реЗрдкреНрд░реЛ рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдЬреЛрдбрд╝рд╛

рд╕рдлрд▓рддрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ

    "skipTemplateCodegen": true,
    "strictMetadataEmit": true,
    "fullTemplateTypeCheck": true
    "skipTemplateCodegen": false,
    "strictMetadataEmit": false
    "skipTemplateCodegen": false,
    "strictMetadataEmit": true,
    // fullTemplateTypeCheck omitted (= default value)

рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ

    "skipTemplateCodegen": true,
    "strictMetadataEmit": true,
    // fullTemplateTypeCheck omitted (= default value)
    "skipTemplateCodegen": true,
    "strictMetadataEmit": false
    // fullTemplateTypeCheck omitted (= default value)

рдЕрд╡рд▓реЛрдХрди

рд╡рд╛рд░реНрдб рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, "skipTemplateCodegen": true рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ "fullTemplateTypeCheck": true рдХреЛ рднреА ngc рдХреЗ рд╕рд╛рде рд╕рдлрд▓рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рд╛рдЗрдб рдиреЛрдЯреНрд╕ / рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░

рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ "рдПрдУрдЯреА рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ" ( рдХрдВрдкрд╛рдЗрд▓рд░ рдбреЙрдХреНрд╕ рдореЗрдВ "рд╕реНрдерд┐рд░ рдореВрд▓реНрдп рдкреБрдирд░реНрдЬреАрд╡рди рдХреА " ) рддрдХ рдЬрд╛рддреА рд╣реИред Imo, strictMetadataEmit рд╡рд┐рдХрд▓реНрдк рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреБрдЫ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ рдпрд╛ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рд╕рдордЭ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдЯреВрдЯреА рд╣реБрдИ рд╣реИ broken

рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рд╕реЗ рдореИрдВ рдпрд╣ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдЕрдХреНрд╕рд░ static forRoot(): ModuleWithProviders рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдХреЛрдб рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ "рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдпреЛрдЧреНрдп" рдмрди рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдмрдирддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░рд┐рдкреЛрдЬрд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореИрдВ рдХреЛрдб рдХреА рдХреБрдЫ рдЕрд╕реНрдкрд╖реНрдЯ рдпрд╛рджреЛрдВ рдкрд░ рдЕрдЯрдХрд▓реЗрдВ рднреА рдирд╣реАрдВ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдХрд╛рдо рдХрд░рддреЗ / рдЧреИрд░-рдХрд╛рдо рдХрд░рддреЗ рджреЗрдЦрд╛ рд╣реИред

рдХреНрдпрд╛ рдПрдирдЬреАрд╕реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдЬреЛ рдПрдирдЬреАрд╕реА рд╕реЛрд░реНрд╕ рдХреЛрдб рдореЗрдВ рд▓рд╛рдЗрди рдирдВрдмрд░ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрд░рд░ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж, @dherges , рд╕рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдореБрдЭреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЛрдИ рд╕реБрд░рд╛рдЧ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпреЗ рдЭрдВрдбреЗ рдорджрдж рдпрд╛ рдЪреЛрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

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

рдХреНрдпрд╛ рдХреЛрдИ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЕрдм рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
ng build --prod
рдореИрдВ рдПрдирдПрдХреНрд╕рдПрдХреНрд╕-рдкреНрд░рдЧрддрд┐рдмрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдФрд░ рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ: "рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдбреЗрдХреЛрд░реЗрдЯрд░реНрд╕ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди 'NgProgressModule' рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ред"

рдХреНрдпрд╛ рдЖрдк рдкреБрд╕реНрддрдХрд╛рд▓рдп tsconfig рдХреЗ рд╕рд╛рде рдирд╡реАрдирддрдо рдХреЛрдгреАрдп рдХреНрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдЕрдЧрд░ рдореИрдВ рдирд╣реАрдВ
рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдпрд╛ рддреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рдПрдирдЬреА- packagr v3.0.0-rc.3 рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдХрд░реЗрдВ

рдмреБрдз рдкрд░, 09 рдордИ 2018 рдХреЛ 15:47 рдмрдЬреЗ, iamimbohacker рд╕реВрдЪрдирд╛рдПрдВ @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рдХреНрдпрд╛ рдХреЛрдИ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЕрдм рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдореИрдВ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЬрдм рдПрдирдЬреА рдмрд┐рд▓реНрдб --prod
рдореИрдВ рдПрдирдЬреАрдПрдХреНрд╕-рдкреНрд░рдЧрддрд┐рдмрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдФрд░ рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ: "рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдбреЗрдХреЛрд░реЗрдЯрд░реНрд╕ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ рд▓реЗрдХрд┐рди
'NgProgressModule' рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ред "

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдереНрд░реЗрдб рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд┐рдпрд╛ рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/angular/angular/issues/23609#issuecomment-387743732 ,
рдпрд╛ рдзрд╛рдЧрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AQv-WtOWkvdrrvf6luk2S0wYaFWeLaejks5twvNugaJpZM4ssqoI
ред

рдореИрдВ рдХреЗрд╡рд▓ Angular CLI 6.0.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдПрдирдЬреА-рдкреИрдХрд╛рдЧреНрд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ

@ рдореЗрд░реЗ рдкрд╛рд╕ рдпреЗ рд╣реИрдВ
image

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рдЬрдм рдореИрдВ рдПрдУрдЯреА рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ

рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреНрдпреЛрдВ рд╡рд┐рд╕реНрддреГрдд рд╣реИ, рдЗрд╕рдХреА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ @ alan-agius4 рдХреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдореЗрд░рд╛ dherges / ng-packagr # 860 рдкрд░ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рд╣реИред

рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдирд╡реАрдирддрдо рдХреЛрдгреАрдп рдФрд░ рдПрдирдЬреА-рдкреИрдХрд╛рдЧреНрд░рд╛ (3.0.0) рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рддреАрди рдкреВрд░реНрд╡реЛрдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рд╕рддреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИрдВ (рдпрд╣ рдХреЛрдгреАрдп-рд╕реАрдПрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рддреЗ рд╕рдордп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ)ред
рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ @JoostK рдХреЛ рдмрдирд╛рдпрд╛ рдкреАрдЖрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ ... рдпрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдирдпрд╛ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрдзреЗ рдореЗрдВ рдПрдХ рджрд░реНрдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдордЭрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреБрдЫ рдХрд╛рдо рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ (рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдЬрд╛рдирдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВ рдХрд┐ рдореИрдВ рдЗрд╕ рдХрд╛рдо рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рдХреНрдпреЛрдВ рдпрд╛ рдХреИрд╕реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВ), рдореИрдВ рджреВрд╕рд░рд╛ @dherges рдмреЗрд╣рддрд░ рддреНрд░реБрдЯрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ ...

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореБрдЭреЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕реНрд░реЛрдд рдорд┐рд▓рд╛, рдпрд╣ рдЧрд▓рдд рдерд╛ paths tsconfig рдореЗрдВ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдШреЛрд╖рдгрд╛ред рдлрд┐рд░ рднреА, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдирд┐рджрд╛рди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдпрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ ...

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛:

`` `Library.metadata.json рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛
"рдореЗрдЯрд╛рдбреЗрдЯрд╛": {}


Then I changed the public_api.ts in the library project:

рд╕реЗ

рдирд┐рд░реНрдпрд╛рдд * 'рд╕реЗ ред/lib/auth';

рд╕реЗрд╡рд╛ рдореЗрд░реЗ

рдирд┐рд░реНрдпрд╛рдд * 'рд╕реЗ ред/lib/auth/index';
`` `

рдЕрдм рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ?

рдХреНрдпреЛрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдбреЗрдХреЛрд░реЗрдЯрд░реНрд╕ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ? рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдЕрд╕рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдЗрд╕рдХреЗ рдкреАрдЫреЗ рдХреА рд╕реЛрдЪрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ .. рдЙрдкрд▓рдмреНрдз рдбреЙрдХреНрд╕ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ .. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рдХ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИред


@NgModule ({})

рдирд┐рд░реНрдпрд╛рдд рд╡рд░реНрдЧ MyStoreModule {
рд╕реНрдЯреИрдЯрд┐рдХ рдлреЙрд░рд░реВрдЯ (): рдореЙрдбреНрдпреВрд▓рд╡рд┐рдердкрд░реНрд╡рд╛рдЗрдбрд░реНрд╕ {
StoreModule.forRoot (reducers) рд╡рд╛рдкрд╕ рдХрд░реЗрдВ;
}
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ (рдирд┐рдЬреА рд╕реНрдЯреЛрд░: рд╕реНрдЯреЛрд░) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ("рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реНрдб рдПрдкреНрд▓реАрдХреЗрд╢рди рд╕реНрдЯреЛрд░ --->", рдпрд╣.рд╕реНрдЯреЛрд░);
}
}


@NgModule ({
рдЖрдпрд╛рдд: [
StateProviderModule.forRoot (),
],
рдкреНрд░рджрд╛рддрд╛: [
]
})

рдирд┐рд░реНрдпрд╛рдд рд╡рд░реНрдЧ ABCModule {}


'ABCModule' рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐
рдбреЗрдХреЛрд░реЗрдЯрд░реНрд╕ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 'MyMoreModule' рдореЗрдВ 'StoreModule' рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
'MyStoreModule' рдХреЛ 'StoreModule' рдХрд╣рддреЗ рд╣реИрдВред

ABCModule рдореЗрдВ рдЗрди рд╡рд░реНрдЧреЛрдВ рдХрд╛ рд╕реАрдзрд╛ рд╕рдВрджрд░реНрдн рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ .. рд▓реЗрдХрд┐рди 'рдЪрд┐рдВрддрд╛рдУрдВ рдХреЗ рдкреГрдердХреНрдХрд░рдг' рдХреЗ рдорд╛рдирдХ рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╣реЛрдЧрд╛ред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░??

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

рдЙрджрд╛рд╣рд░рдг:

export const ROUTE_TREE: RouteTree  = [
    {
        path: PATH_PARENT,
        component: ParentComponent,
        treeChildren: [
            {
                path: PATH_CHILD_1,
                component: ChildComponent,
                data: {
                    num: 1
                },
            },
                path: PATH_CHILD_2,
                component: ChildComponent,
                data: {
                    num: 2
                },
            }
        ]
    }
];

рдмрди рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

export const ROUTE_TREE: RouteTree  = [
    {
        path: PATH_PARENT,
        component: ParentComponent
    },
    {
        path: PATH_CHILD_1,
        component: ChildComponent,
        data: {
            num: 1
        },
    },
        path: PATH_CHILD_2,
        component: ChildComponent,
        data: {
            num: 2
        },
    }
];

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

JIT рдареАрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди AOT рдореБрдЭреЗ Function calls are not supported in decorators рдХрд╣рддреЗ рд╣реБрдП рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИред

рдореИрдВ рд╢рд╛рдпрдж рджреВрд╕рд░реЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ рдФрд░ Route s рдлреНрд▓реИрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдкреЗрдбрд╝ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдХрдиреНрд╡рд░реНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ред

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

@ alan-agius4 рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдЪ рдореЗрдВ рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдЕрдкрдиреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ ...

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рди рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдПред

@ alan-agius4 рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЕрдм рдЬрдм рдореИрдВ рдЗрд╕реЗ рдЬрд╛рдирддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд▓рдЧрддрд╛ рд╣реИ ...

рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдЕрджреНрдпрддрди? рдореБрдЭреЗ рдпрд╣рд╛рдБ рдХрд╛рдлреА рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╣реЛ рд░рд╣реА рд╣реИрдВ: https://github.com/formly-js/ngx-formly/issues/996ред

рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП luuuuv рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ :-)

рдореИрдВ рдлрд┐рд░ рд╕реЗ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рд╕рднреА рдбреЗрдореЛ рдРрдк, рдореБрдЦреНрдп рдРрдк рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (3 рдбреЗрдореЛ, 1 рдореБрдЦреНрдп рдРрдк рдФрд░ 3 рд▓рд╛рдЗрдмреНрд░реЗрд░реА) рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реБрдП 5 рд╡реАрдВ рдмрд╛рд░ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдореЗрдВ рдЖрдпрд╛ рд╣реВрдВред рдореБрдЭреЗ рдпреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╡рд┐рднрд┐рдиреНрди рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИрдВред рдПрдХ рдХреЛ рдКрдкрд░ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ js / ngx- рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ # 996) рдФрд░ рдлрд┐рд░ рдПрдХ рдФрд░ рдЬреЛ рдореБрдЭреЗ рд╕рд┐рд░реНрдл @ ngrx / рдХреЛрд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдпрд╣ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдХрд╣рддрд╛ рд╣реИ:

Error during template compile of 'CoreStoreModule'
  Function calls are not supported in decorators but 'StoreModule' was called.

рдЕрдиреНрдп 3 рдореЗрд░реЗ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ forRoot рд╡рд┐рдзрд┐рдпреЛрдВ рд╕реЗ рд╣реИрдВред рдЗрди рд╕рднреА рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╖рдп рдпрд╣ рд╣реИ рдХрд┐ рдпреЗ рд╕рднреА InjectionToken s рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдХрд╛рдлреА рдЖрд╢реНрд╡рд╕реНрдд рд╣реВрдБ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ forRoot рдПрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓реНрдп рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ InjectionToken ред

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

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

рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЛ forRoot StoreModule рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, EffectsModule.forRoot ( @ngrx/effects ) рдФрд░ StoreDevtoolsModule.instrument() ( @ngrx/store-devtools )ред

рд▓рдЧрддрд╛ рд╣реИ EffectsModule рдФрд░ StoreDevtoolsModule InjectionTokens рднреА рд╣реИрдВред

рдпрд╣ рддреНрд░реБрдЯрд┐ рдПрдХ рд╕рд╛рдл рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓ рдЧрдИ:

@NgModule({
  imports: [
    StoreModule.forRoot(prmCoreActionReducers, { initialState: initialPrmCoreState }),
    EffectsModule.forRoot([ApiEffects, GridEffects]),
    StoreDevtoolsModule.instrument(),
  ],
})
export class PrmCoreStoreModule { }

рдПрдХ рдЧрдбрд╝рдмрдбрд╝ рдореЗрдВ:

@NgModule({
  providers: [
    // STORE DEV TOOLS MODULE instrument() Temporary Fix
    DevtoolsExtension,
    DevtoolsDispatcher,
    StoreDevtools,
    {
      provide: INITIAL_OPTIONS,
      useValue: {},
    },
    {
      deps: [REDUX_DEVTOOLS_EXTENSION, STORE_DEVTOOLS_CONFIG],
      provide: IS_EXTENSION_OR_MONITOR_PRESENT,
      useFactory: createIsExtensionOrMonitorPresent,
    },
    {
      provide: REDUX_DEVTOOLS_EXTENSION,
      useFactory: createReduxDevtoolsExtension,
    },
    {
      deps: [INITIAL_OPTIONS],
      provide: STORE_DEVTOOLS_CONFIG,
      useFactory: createConfig,
    },
    {
      deps: [StoreDevtools],
      provide: StateObservable,
      useFactory: createStateObservable,
    },
    {
      provide: ReducerManagerDispatcher,
      useExisting: DevtoolsDispatcher,
    },

    // EFFECTS MODULE forRoot Temporary Fix
    EffectsRunner,
    EffectSources,
    Actions,
    ApiEffects,
    GridEffects,
    {
      deps: [ApiEffects, GridEffects],
      provide: ROOT_EFFECTS,
      useFactory: createSourceInstances,
    },

    // STORE MODULE forRoot Temporary Fix
    { provide: _INITIAL_STATE, useValue: initialPrmCoreState },
    {
      deps: [_INITIAL_STATE],
      provide: INITIAL_STATE,
      useFactory: _initialStateFactory,
    },
    { provide: _INITIAL_REDUCERS, useValue: prmCoreActionReducers },
    {
      provide: _STORE_REDUCERS,
      useExisting: prmCoreActionReducers instanceof InjectionToken ? prmCoreActionReducers : _INITIAL_REDUCERS,
    },
    {
      deps: [Injector, _INITIAL_REDUCERS, [new Inject(_STORE_REDUCERS)]],
      provide: INITIAL_REDUCERS,
      useFactory: _createStoreReducers,
    },
    {
      provide: META_REDUCERS,
      useValue: [],
    },
    {
      provide: _REDUCER_FACTORY,
      useValue: combineReducers,
    },
    {
      deps: [_REDUCER_FACTORY, META_REDUCERS],
      provide: REDUCER_FACTORY,
      useFactory: createReducerFactory,
    },
    ACTIONS_SUBJECT_PROVIDERS,
    REDUCER_MANAGER_PROVIDERS,
    SCANNED_ACTIONS_SUBJECT_PROVIDERS,
    STATE_PROVIDERS,
    STORE_PROVIDERS,
  ],
})
export class PrmCoreStoreModule { }

рдПрдХ рдиреЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЕрдм рдПрдХ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдХреЛ forRoot рд╕рд╛рде рдорд╛рд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдХрд┐ Angular рдХреЗ APP_INITIALIZER InjectionToken ConfigModule рдкреИрдХреЗрдЬ рд╕реЗ @ngx-config/core рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдореЙрдбреНрдпреВрд▓ рдХреА рддрд░рд╣ рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИред

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

рдХрд┐рд╕реА рднреА рдЕрджреНрдпрддрди ? рдпрд╣ рд╣рдорд╛рд░реЗ рдкреНрд░рд╡рд╛рд╕рди рдХреЛ рдХреЛрдгреАрдп 5 рд╕реЗ 6 рддрдХ рд░реЛрдХ рд░рд╣рд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ 3 рдлреЙрд░рд░реВрдЯ рд╣реИрдВред рдореБрдЭреЗ рдмрд╛рд╣рд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░рд┐рдпреЛрдВ рдХреЗ foroot рдХреЛрдб рдХреЛ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред

рдорд╛рдирд╛ред рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рд░реНрдп рд╣реИред

@ jfpicard1 , рд╡рд╣ рдзреНрд╡рдЬ рдХреЛрдгреАрдп рд╕рдВрдХрд▓рдХ рдФрд░ рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдереА рдЬреЛ рдХреЗрд╡рд▓ yarn link рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣реБрдИ
рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрд░реЛрдд рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдХреЗ рддрдп рдХрд┐рдпрд╛ рд╣реИред

+1 рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

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

ngx-api-utils рдХреЗ рд╕рдВрджрд░реНрдн рд╕реЗ, рд╢рд╛рдпрдж рдпреЗ рдХреЗрд╡рд▓ рдЙрди рдЯреЛрдХрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ рдЬреЛ рдХрд┐ рдЗрдВрдЬреЗрдХреНрд╢рдирдЯрди providedIn рдФрд░ factory рдореЗрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

Https://github.com/ngx-api-utils/ngx-api-utils/commit/276f50afb7d2d6884047adc78b5888026080574e рджреЗрдЦреЗрдВ

@danielmhair рдореИрдВрдиреЗ https://github.com/angular/angular/issues/23609#issuecomment -401456878 рдХреЗ рдКрдкрд░ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рд╣реИ рдФрд░ forRoot рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ InjectionToken рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рд░рд┐рдлрд▓реЗрдХреНрдЯрд░ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдмреЗрд╢рдХ, forRoot рдЦреЛрдирд╛ рдЬреЛ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╛рдж рдЖрддреА рд╣реИ!

рдореИрдВ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдореБрдЭреЗ рдЧрд╣рд░реА рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ InjectionToken рдЕрдХреЗрд▓реЗ рд╣реИ рдпрд╛ рдХреБрдЫ рдФрд░ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ RegExp рд╣реИ рдЬреЛ рдЙрди https://github.com/ngx- рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдареАрдХ рд╣реЛ рдЬрд╛рдП рдпрд╛ рд╡рд┐рд╖рдп рдкрд░ рдЙрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рд╣рдореЗрдВ рдорд┐рд▓реЗ!

рд╣рд╛рдБ, рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ forRoot рдХрдореА рдирд╣реАрдВ рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдмрд╛рдИрдкрд╛рд╕ рд╕реЗ рдирдлрд░рдд рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ред рдореИрдВ рдЕрднреА рднреА рдЗрд╕реЗ рдЯреНрд░реИрдХ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ ngrx рдХреЗ рд╕рд╛рде рд╣реИ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рдЬреЛ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЙрд╕рд╕реЗ рдпрд╣ рдЧрд▓рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ: https://github.com/angular/angular/issues/23609#issuecomment -401460241ред рд╢рд╛рдпрдж рдореИрдВрдиреЗ forRoot рдХреЗ рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рд╕рдм рдХреБрдЫ рдХреЙрдкреА рдирд╣реАрдВ рдХрд┐рдпрд╛:

    StoreModule.forRoot(prmCoreActionReducers, { initialState: initialPrmCoreState }),
    EffectsModule.forRoot([ApiEffects, GridEffects]),
    StoreDevtoolsModule.instrument(),

рдореВрд▓ рд░реВрдк рд╕реЗ, redux devtools chrome extension рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ redux рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм StoreDevtoolsModule.instrument рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рдЧреНрд░рд┐рдб рдХреЗ рд▓рд┐рдП рдЬреАрдИрдЯреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореЗрд░реЗ рдЧреНрд░рд┐рдб рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рддреЛ рдореИрдВ рдорд╛рди рд░рд╣рд╛ рд╣реВрдБ, рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдХрд┐ рдпрд╣ forRoot рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рд╕реЗ рдЙрдкрдЬрд╛ рд╣реИред рд╣рдо рджреЗрдЦреЗрдВрдЧреЗред

рдореИрдВ рд╕рд┐рдорд┐рд▓рд┐рдВрдХ (рдФрд░ npm link рдФрд░ yarn link ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдореИрдВ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ node_modules рдХреЙрдкреА рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ - рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ npm install рдЬрдм рдпрд╣ рдЯрд╛рд░рдмреЙрд▓ рдХреЛ рдЕрдирдкреИрдХ рдХрд░рддрд╛ рд╣реИред

рдЖрдкрдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╛рд░реНрди рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ yarn add @my/lib<strong i="5">@link</strong>:../dist/my-lib рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реИ, рд╣реИ рдирд╛? рдпрд╣ package.json "@my/lib": "link:../dist/my-lib" рдЬреБрдбрд╝ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдореИрдВ рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ npm link рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╣реА рдмрд╛рдд рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм рдореИрдВ yarn рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдЙрди рд▓рд┐рдВрдХ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред

рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ @dherges рдкрд░ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ?

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕:
рд▓рд┐рдм 1
Lib 2 lib 1 рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ
Lib 3, lib 1 рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ
рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдореЛ
рдореЗрд░рд╛ рдореБрдЦреНрдп рдРрдк lib 1, lib 2 рдФрд░ lib 3 рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

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

рдФрд░ рдЙрди рдкрд░ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЛрд╕реНрдЯ рдЗрдВрд╕реНрдЯреЙрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред рдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдгред

@ рдореЗрд░реЗ рдРрдк рдореЗрдВ рдореЗрд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ?

рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ dist/my-lib рд╕реЗ my-app/node_modules/@my/lib рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди my-lib my-app/node_modules рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

рдареАрдХ рд╣реИ, @dherges рдореБрдЭреЗ рдпрд╣ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ред dist/my-lib , рдореИрдВ npm pack рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рдлрд┐рд░ yarn add @my/lib<strong i="8">@file</strong>:../dist/my-lib/my-lib-3.0.0.tgz рдХреЛ рдЕрдкрдиреЗ рдРрдк рдкрд░ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рдЬреЛ рдбрд┐рд╕реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдХреЙрдкреА рдХрд░рдирд╛), рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рд╣реВрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, yarn link рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ? рдпрд╣ рдПрдХ рдХреЛрд░ рдХреЛрдгреАрдп рдореБрд╣рд╛рд╡рд░рд╛ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдЕрдм рд▓рдЧрднрдЧ 3 рдорд╣реАрдиреЗ рд╕реЗ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИред рдЗрд╕реЗ рдПрдХ рдЕрд╡рд░реБрджреНрдз рдмрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЧрдИ? рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдмрджрд╕реВрд░рдд рдХрд╛рдо рдкрд░ рд▓рд╛рдЧреВ рд╣реЛ рд░рд╣реА рд╣реИрдВ рдФрд░ рдпрд╣ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп 6 рдореЗрдВ рдкреНрд░рд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрд╡рд░реЛрдзрдХ рд╣реИ,

рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ 6.0.8 рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (https://github.com/angular/angular/pull/22856 рджреЗрдЦреЗрдВ)ред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рд▓рдХреНрд╖рдгреЛрдВ рдХреЛ рдмрдирд╛рддреА рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдХрд┐ рд▓реЛрдЧ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред

рдореБрдЭреЗ рдПрдХ рдФрд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдорд┐рд▓рд╛, рдЬреЛ рдореЗрд░реЗ рдкреВрд░реНрд╡ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдЬрд┐рддрдирд╛ рдмрджрд╕реВрд░рдд рдирд╣реАрдВ рд╣реИред рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдХрд╣рд╛рдБ рдорд┐рд▓рд╛, рдпрд╣рд╛рдБ:
https://github.com/dschnelldavis/angular2-json-schema-form/issues/273#issuecomment -407184242ред рддреЛ, рдпрд╣рд╛рдБ рдореИрдВ ngrx рдХреЗ рд╕рд╛рде рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред


export const storeModuleForRoot: ModuleWithProviders = StoreModule.forRoot(prmCoreActionReducers, { initialState: initialPrmCoreState })
export const effectsModuleForRoot: ModuleWithProviders = EffectsModule.forRoot([ApiEffects, GridEffects])
export const storeDevToolsModuleForRoot: ModuleWithProviders = StoreDevtoolsModule.instrument()

@NgModule({
  imports: [
    effectsModuleForRoot,
    storeModuleForRoot,
    storeDevToolsModuleForRoot,
  ],
})
export class PrmCoreStoreModule { }

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЛ ModuleWithProviders рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЕрдиреНрдпрдерд╛, рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ [email protected] рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЬрд╛рдБрдЪ рдХреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реИ?

рдореИрдВрдиреЗ рдирдИ рд╢рд╛рдЦрд╛ https://github.com/ngx-api-utils/ngx-api-utils/pull/14 рдпрд╣рд╛рдБ рдирдП рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдХреЛрдгреАрдп 6.1.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЖрд╕рд╛рди рд╢рд╛рдЦрд╛ рдХреЛ рд░рдЦрд╛ рд╣реИред

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

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

рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ

 public static forRoot(config: ITimoneerTab[]): ModuleWithProviders {
  return {
    ngModule: TabsModule,
    providers: [
      [...]
      {
        provide: APPLICATION_TABS,
        useValue: config
      }
    ]
  };
}

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

public static forRoot(config: ITimoneerTab[]): ModuleWithProviders {
  const output = {
    ngModule: TabsModule,
    providers: [
     [...]
      {
        provide: APPLICATION_TABS,
        useValue: config
      }
    ]
  };

  return output;
}

рдЗрд╕реЗ рдЯрд╛рдЗрдореЛрдирд░ рдореЗрдВ рдареАрдХ рдХрд░рдирд╛

ng build --prod
ERROR in Error during template compile of 'AppTabsModule'
  Function calls are not supported in decorators but 'TabsModule' was called.

рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг RouterModule рд╣реИ

@leonardochaia рдЬреЛ рд╕рд╣реА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд┐рд░ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╢рд╛рдорд┐рд▓ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдХрдореА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред

@Leonardochaia рдХреЗ рдЙрддреНрддрд░ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рдЕрдкрдиреЗ рддреНрд░реБрдЯрд┐ рдЖрдпрд╛рдд рдкрд░ рдмрд╕ рдпрд╣ рддреНрд░реБрдЯрд┐ рддрдп рдХреА .. forRoot рд╡рд┐рдзрд┐ рдШреЛрд╖рдгрд╛ рд╕реЗ console.log() рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЛ рд╣рдЯрд╛рдХрд░

рд╕рд╛рдЭрд╛рдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдВрджрд░реНрдн рд╕реЗ рдкрд╛рд░рд┐рдд рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╛рдЭрд╛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдореИрдВ https://github.com/angular/angular-cli/issues/9358#issuecomment -373053053 рдореЗрдВ рд╕реБрдЭрд╛рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрд╕рдлрд▓ рд░реВрдк рд╕реЗред

рдореЗрд░рд╛ рдкрд░рд┐рджреГрд╢реНрдп рдиреАрдЪреЗ рд╣реИ:

> ng --version
Angular CLI: 6.1.4
Node: 10.4.1
OS: win32 x64
Angular: 6.1.4
... animations, cli, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

Package                            Version
------------------------------------------------------------
@angular-devkit/architect          0.7.4
@angular-devkit/build-angular      0.7.4
@angular-devkit/build-ng-packagr   0.7.5
@angular-devkit/build-optimizer    0.7.4
@angular-devkit/build-webpack      0.7.4
@angular-devkit/core               0.7.4
@angular-devkit/schematics         0.7.4
@angular/cdk                       6.4.6
@angular/flex-layout               6.0.0-beta.17
@angular/material                  6.4.6
@ngtools/json-schema               1.1.0
@ngtools/webpack                   6.1.4
@schematics/angular                0.7.4
@schematics/update                 0.7.4
ng-packagr                         3.0.6
rxjs                               6.2.2
typescript                         2.7.2
webpack                            4.9.2

рдореЗрд░рд╛ рдХреЛрдб:

import { NgModule, ModuleWithProviders, InjectionToken } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppSettingsService } from './services/app-settings.service';

export const AppSettingsObject = new InjectionToken('AppSettingsObject');

export function createAppSettingsService(settings) {
  return new AppSettingsService(settings);
}

@NgModule({
  imports: [
    CommonModule
  ]
})
export class AppSettingsModule {
  static forRoot(config: Object): ModuleWithProviders {
    return {
      ngModule: AppSettingsModule,
      providers: [
        { provide: AppSettingsObject, useValue: config },
        {
          provide: AppSettingsService,
          useFactory: (createAppSettingsService),
          deps: [AppSettingsObject]
        }
      ]
    };
  }
}

рддреНрд░реБрдЯрд┐:

> ng build my-app --prod

Date: 2018-08-29T
Hash: saghsh4ty463f34r4fef
Time: 8585ms
chunk {0} runtime.xxx.js (runtime) 1.05 kB [entry] [rendered]
chunk {1} styles.xxx.css (styles) 102 kB [initial] [rendered]
chunk {2} polyfills.xxx.js (polyfills) 130 bytes [initial] [rendered]
chunk {3} main.xxx.js (main) 128 bytes [initial] [rendered]

ERROR in Error during template compile of 'MyAppModule'
  Function calls are not supported in decorators but 'AppSettingsModule' was called.

рдХреЛрдИ рдорджрдж?

рдореИрдВ рдЕрдкрдирд╛ рдлрд┐рдХреНрд╕ рд╕реБрдЭрд╛рдКрдВрдЧрд╛ред рдпрд╣ рдЕрд╕реНрдерд╛рдпреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рддрдирд╛ рдмреБрд░рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдореБрдЭреЗ рд▓рдЧрднрдЧ 5 рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдХрд╛рдлреА рдорджрдж рдХреАред

MyAppModule , рдЬрдм рдЖрдк forRoot рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЗрд╕реЗ рдПрдХ рдХрд╛рд╕реНрдЯ рд╡реИрд░рд┐рдПрдмрд▓ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ:

export const appSettingsModuleForRoot: ModuleWithProviders = AppSettingsModule.forRoot(yourConfig)

...
imports: [
  ...,
  appSettingsModuleForRoot,
],
...

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЖрдпрд╛рдд рдмрдирд╛рдУ ModuleWithProviders рд╕реЗ @angular/core рдФрд░ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ред рдпрджрд┐ рдЖрдк appSettingsModuleForRoot рдЪрд░ рдирд╣реАрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

@danielmhair рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдереА рдФрд░ рд╡рд╣ рднреА рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ред

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

рд╕рдорд╕реНрдпрд╛

/**
 * main.module.ts
 *
// Angular & Lodash
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { assign } from 'lodash';

// Application Modules
import { coreConfig } from '../modules/core';
import { userConfig } from '../modules/user';

// Components
import { MainComponent } from './components/main.component';

const appConfig = assign({}, coreConfig, userConfig);     // <--- This is where the problem came from!!

@NgModule({
  declarations: [
    MainComponent
  ],
  imports: [
    BrowserModule,
    // Application-specific modules
    AppSettingsModule.forRoot(appConfig)
  ],
  providers: [],
  bootstrap: [MainComponent]
})
export class MainModule { }

рдЬреЛрдбрд╝

рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛

/**
 * main.module.ts
 *
@NgModule({
  declarations: [
    MainComponent
  ],
  imports: [
    BrowserModule,
    // Application-specific modules
    AppSettingsModule.forRoot(coreConfig, userConfig)
  ],
  providers: [],
  bootstrap: [MainComponent]
})
export class MainModule { }


/**
 * app.settings.module.ts
 *
export const CoreSettingsObject = new InjectionToken('CoreSettingsObject');
export const UserSettingsObject = new InjectionToken('UserSettingsObject');

export function createAppSettingsService(core, user) {
  return new AppSettingsService(assign({}, core, user));
}

@NgModule({
  imports: [
    CommonModule
  ]
})
export class AppSettingsModule {
  static forRoot(core: Object, user: Object): ModuleWithProviders {
    return {
      ngModule: AppSettingsModule,
      providers: [
        { provide: CoreSettingsObject, useValue: core },
        { provide: UserSettingsObject, useValue: user },
        {
          provide: AppSettingsService,
          useFactory: (createAppSettingsService),
          deps: [CoreSettingsObject, UserSettingsObject]
        }
      ]
    };
  }
}

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд▓ рд▓рдЧрддреА рд╣реИ рдХрд┐ forRoot рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрд╡рд╢реНрдпрдХ рдХреЛрдИ рдХреЛрдб-рдирд┐рд╖реНрдкрд╛рджрди рдирд╣реАрдВ рд╣реИред рд╕рднреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдХреЗрд╡рд▓ рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЗ рднреАрддрд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред forRoot рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд┐рд░ рдореВрд▓реНрдпреЛрдВ рд╕реЗ рдирд┐рдкрдЯ рд╕рдХрддреА рд╣реИред

рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рдмрд╣реБрдд рдЬрд▓реНрдж рдмрд╛рдд рдХреА; рдпрд╣ рдПрдХ рдкреНрдпрд╛рдЬ рдХреЛ рдЫреАрд▓рдиреЗ рдЬреИрд╕рд╛ рд╣реИ! рдпрд╣ рдореБрджреНрджрд╛ рдЕрднреА рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддрдп рдирд╣реАрдВ рд╣реИ ред

рдкреНрд░рд╕рдВрдЧ

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

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдПрдХ рдФрд░ рдореБрджреНрджреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ dist рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ tsconfig.json рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдерд╛ред

рдореВрд▓ tsconfig.json рд╕реЗрдЯрд┐рдВрдЧреНрд╕
{
    ...
    "paths": {
      "my-lib": [
        "dist/my-lib"
      ],
      "my-lib/*": [
        "dist/my-lib/*"
      ]
    }
}
рд╕рдВрд╢реЛрдзрд┐рдд tsconfig.json рд╕реЗрдЯрд┐рдВрдЧреНрд╕
{
    ...
    "paths": {
      "my-lib": [
        "projects/my-lib"
      ],
      "my-lib/*": [
        "projects/my-lib/*"
      ]
    }
}

рдЙрдкрд░реЛрдХреНрдд рд╕рдВрд╢реЛрдзрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде, рдмрд┐рд▓реНрдб рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдореИрдВ рдореВрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ tsconfig.json рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдмрд┐рд▓реНрдб рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЕрдм рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ github repo рдмрдирд╛рдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЙрд╕ рд░реЗрдкреЛ рдХреЛ рдХреНрд▓реЛрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ npm run repro рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд╣ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@Samherrmann рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЕрдкрдирд╛ рдХреЛрдб рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред

рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдПрдУрдЯреА-рд╕рдХреНрд╖рдо рд╕рдВрдХрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ import рдХрдердиреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдЕрдВрджрд░ index.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА public_api.ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ Function calls are not supported in decorators but 'Module' was called. рддреНрд░реБрдЯрд┐ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ

рд▓реЗрдХрд┐рди рдЙрд╕рдХреЗ рдмрд╛рдж рднреА, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рдХреЗ рднреАрддрд░ рд╕рднреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛-рдЖрдзрд╛рд░рд┐рдд рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг, рдЬреЛ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рднреАрддрд░ index.ts рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ, рдХреЛ рд╕реАрдзреЗ рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рдирд╛ рдкрдбрд╝рд╛ред

рдЕрд░реНрдерд╛рдд рдкрд░рд┐рд╡рд░реНрддрди:

import { TestService } from './services';

рд╕реЗрд╡рд╛ рдореЗрд░реЗ

import { TestService } from './services/test.service';

рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП https://github.com/kiranjholla/ng-issue-23609-repro/issues/1#issuecomment -417449088 рдкрд░ рджреЗрдЦреЗрдВред

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

рдореИрдВрдиреЗ рд╕рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд▓реЗ рдЬрд╛рдХрд░ рд╣рд▓ рдХрд┐рдпрд╛ (рдЙрджрд╛ред function x() {} , рдФрд░ const x = () =>{}

@albanx рдХреНрдпрд╛ рдЖрдк рдЕрдкрдирд╛ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@yogeshgadge рдореЗрдВ * .module.ts (рд░реВрдЯрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рд╕рд╣рд┐рдд) рдлрд╛рдЗрд▓реЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдВрддрд┐рдо рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рдЬрдЧрд╣ рд▓реЗрддреА рд╣реИрдВ рдФрд░ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдмрд╛рд╣рд░реА рдлрд╝рд╛рдЗрд▓реНрд╕ рдореЗрдВ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдФрд░ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдХрд░рддреА рд╣реИрдВ:
App.module.ts рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдореЗрд░реЗ рдкрд╛рд╕ рдерд╛:

imports: [
   //....
    StoreModule.forRoot(reducers, {
      initialState: () => { //some fun }
    }),

рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛

import loadFromFunction from 'utils';

imports: [
   //....
    StoreModule.forRoot(reducers, {
      initialState: loadFromFunction
    }),

рдФрд░ рдмрд░реНрддрди

export function loadFromFunction() {
}

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рджреЗрддрд╛ рд╣реИ

рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ Angular 7.0 (6.x рд╕реЗ рдКрдкрд░) рд╕реЗ рд░реАрдкреИрдХреЗрдЬ рдХрд░ рд▓рд┐рдпрд╛, рддреЛ рдореБрдЭреЗ рдЕрдкрдиреА рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓рдиреА рд╢реБрд░реВ рд╣реЛ рдЧрдИред рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд▓рд╛рдЧреВ рд╕реБрдЭрд╛рд╡ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рднрд╛рдЧреНрдп рдХреЗ рдЖрдЬрд╝рдорд╛рдпрд╛ред рдореЗрд░рд╛ forRoot рдЬрд┐рддрдирд╛ рд╕реНрдерд┐рд░ рд╣реИ рдЙрддрдирд╛ рд╣реА рдорд┐рд▓рддрд╛ рд╣реИред

рдкреБрд╕реНрддрдХрд╛рд▓рдп

./misc/injection-tokens.ts

import {InjectionToken} from '@angular/core';
import {NgForageOptions} from '../config/ng-forage-options';

export const DEFAULT_CONFIG = new InjectionToken<NgForageOptions>('Default NgForage config');

NgForage.module.ts

import {ModuleWithProviders, NgModule} from '@angular/core';
import {NgForageOptions} from './config/ng-forage-options';
import {DEFAULT_CONFIG} from './misc/injection-tokens';

/**
 * NgForage core module
 */
@NgModule({})
export class NgForageModule {

  public static forRoot(config: Partial<NgForageOptions>): ModuleWithProviders<NgForageModule> {
    return {
      ngModule: NgForageModule,
      providers: [
        {
          provide: DEFAULT_CONFIG,
          useValue: config
        }
      ]
    };
  }
}

рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди

import { BrowserModule } from '@angular/platform-browser';
import { NgModule, ModuleWithProviders } from '@angular/core';
import { NgForageModule } from 'ngforage';
import { AppComponent } from './app.component';

const ngfm: ModuleWithProviders<NgForageModule> = NgForageModule.forRoot({});

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

рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд░реЗрдкреЛ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ:

  • Alorel / ngforage # 107
  • Alorel / ngforage # 102

рдпрд╣ 4ever рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛрдиреЗ рдЬреИрд╕рд╛ рд╣реИред AOT рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ: (

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 7.0.2 рдФрд░ 7.0.3 рдХреЗ рдмреАрдЪ рдХреБрдЫ рдиреЗ рдЗрд╕ рдмрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рд╣реИред
рдореБрдЭреЗ рдЬреЛ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рд╡рд╣ рд╣реИ:
[INFO] chunk {0} runtime.ec2944dd8b20ec099bf3.js (рд░рдирдЯрд╛рдЗрдо) 1.41 kB [рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐] [рд░реЗрдВрдбрд░]
[ERROR] рдбреЗрдХреЛрд░реЗрдЯрд░реНрд╕ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 'рдЗрдВрдЬреЗрдХреНрдЯреЗрдмрд▓' рдореЗрдВ 'DmakeDecorator' рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
рдЬрд╛рдирдХрд╛рд░реА
[ERROR] 'рдЗрдВрдЬреЗрдХреНрдЯреЗрдмрд▓' рдХреЙрд▓ 'ecmakeDecorator'ред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рдХреБрдЫ рдирд╣реАрдВ рдмрддрд╛рддрд╛, рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдбрд┐рдмрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрддреНрддрд░ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рд╣реЛрдЧрд╛ ...
Ivy рдХреЗ тДв

рдЪрд▓реЛ рдмрд╕ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╕рдВрднрд╛рд▓реЛ рдФрд░ рдЖрдЗрд╡реА рдХреЗ рдЖрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВ

рдореИрдВрдиреЗ рд╢рд╛рдЦрд╛ 6.0.0-beta.7 рдФрд░ 6.0.0-beta.8 рдХреЗ рдмреАрдЪ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмреАрдЪ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ рд╣реИред https://github.com/alan-agius4/angular-issue-23609 рдкрд░ рдПрд▓рди рдХреЗ рдкреНрд░рдЬрдирди рд░реЗрдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ

package.json in https://github.com/alan-agius4/angular-issue-23609 рдЬреЛ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

{
  "name": "angular-function-calls-decorators",
  "version": "1.0.0",
  "private": true,
  "description": "",
  "main": "index.js",
  "scripts": {
    "build": "ngc",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@angular/core": "6.0.0-beta.7",
    "@angular/common": "6.0.0-beta.7",
    "@angular/compiler": "6.0.0-beta.7",
    "@angular/compiler-cli": "6.0.0-beta.7",
    "@angular/router": "6.0.0-beta.7",
    "rxjs": "^5.5.8",
    "zone.js": "^0.8.26"
  },
  "dependencies": {
    "typescript": "~2.6.2"
  }
}

рдФрд░ рдкреИрдХреЗрдЬред https://github.com/alan-agius4/angular-issue-23609 рдореЗрдВ "рдлрдВрдХреНрд╢рди рдХреЙрд▓ рдбреЗрдХреЛрд░реЗрдЯрд░ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ" рддреНрд░реБрдЯрд┐

{
  "name": "angular-function-calls-decorators",
  "version": "1.0.0",
  "private": true,
  "description": "",
  "main": "index.js",
  "scripts": {
    "build": "ngc",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@angular/core": "6.0.0-beta.8",
    "@angular/common": "6.0.0-beta.8",
    "@angular/compiler": "6.0.0-beta.8",
    "@angular/compiler-cli": "6.0.0-beta.8",
    "@angular/router": "6.0.0-beta.8",
    "rxjs": "^5.5.8",
    "zone.js": "^0.8.26"
  },
  "dependencies": {
    "typescript": "~2.7.2"
  }
}

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 6ef9f2278f64697920df8ecaf79293a7eef7e0ab рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╣реИред

@mgechev рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрдкрдиреЗ рд╕рдВрдХрд▓рдХ рд╕рдорд╕реНрдпрд╛ рдХрд╣ рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИред рддреЛ, рдЬрдм рд╣рдо рдЗрд╕ рд╕рд╛рдзрди рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рд░рд┐рд▓реАрдЬ рдореЗрдВ? рдпрд╣ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рд╕рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ, рдкреИрдХреЗрдЬреЛрдВ, рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛрдгреАрдп 7 рдкрд░ рдЬрдирд░реЗрдЯрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред 7. рдкрд╣рд▓реЗ рдпрд╣ рдареАрдХ рдерд╛! рдХреНрдпрд╛ рдореБрдЭреЗ рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрдк рдХреНрдпрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ!

@ rahulsahay19 рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд▓рд┐рдП рдореБрджреНрджреЗ рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред

рдХреЛрдгреАрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп PageModule

@NgModule({
  imports: [
    CommonModule,
    RouterModule
  ],
  exports: [
    RouterModule,
    DcPage,
    DcPageFooter,
    DcPageNavbar,
    DcPageSidebarDirective,
    DcPageSidebarElement
  ],
  declarations: [
    DcPage,
    DcPageFooter,
    DcPageNavbar,
    DcPageSidebarDirective,
    DcPageSidebarElement
  ],
  providers: []
})
export class DcPageModule {
  static forRoot(pageService: any): ModuleWithProviders {
    return {
      ngModule: DcPageModule,
      providers: [
        {provide: 'pageService', useClass: pageService}
      ]
    };
  }
}

рдЯреЗрд╕реНрдЯ рдРрдк , рдЬреЛ DcPageModule рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

@NgModule({
  imports: [
    BrowserModule,
    CommonModule,
    FormsModule,
    ContractsRoutingModule,
    DcPageModule.forRoot(PageService),
    ... other stuff ...
   ],
  declarations: [
    ...
  ],
  providers: [
    ...
  ]
})
export class ContractsModule {}

рдХрд┐рд╕реА рдХреЛ рднреА рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдФрд░ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

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

@ rahulsahay19 рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ? рдЖрдк рдЦрд░рд╛рдм рд╣реИрдВ, рдпрд╣ рдирд░рдХ рд╣реИ рдФрд░ рдХреЛрдИ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ :) рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдореБрдЭреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓реА рд╣реИ, рд╡рд╣ forRoot рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ providers forRoot рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдкрдХрд╛ рдорд╛рдЗрд▓реЗрдЬ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ :)

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

@ rahulsahay19 рддреНрд░реБрдЯрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рдПрдХ рдРрд╕рд╛ рдореБрджреНрджрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП; рдЖрдкрдХреА рдирд┐рд░рд╛рд╢рд╛ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдпрджрд┐ рд╕рдВрд╕реНрдХрд░рдг 6 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛, рддреЛ рдЖрдк рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдордиреЗ v6 рдФрд░ v7 рдХреЗ рдмреАрдЪ рдмрдбрд╝реЗ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд┐рдПред

@mgechev рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП

рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐ ... рдбреЗрдХреЛрд░реЗрдЯрд░ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди 'NgModule' рдореЗрдВ 'DmakeDecorator' рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ AOT рдмрд┐рд▓реНрдб рдореЗрдВ рдХреЗрд╡рд▓ @ рдХреЛрдгреАрдп / рдХреЛрд░ рдХрд╛ _one_ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдиреАрдЪреЗ рдХрдИ рдирд╣реАрдВ:
find .|grep modules/@angular/core/package.json

рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рддрдм рд╣реБрдИ рдЬрдм рдПрдХ lerna рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдореЙрдбреНрдпреВрд▓ 7.2.4 рдФрд░ рдЕрдиреНрдп 7.2.5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рд╕рд╛рдЭрд╛рдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдВрджрд░реНрдн рд╕реЗ рдкрд╛рд░рд┐рдд рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╛рдЭрд╛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдореИрдВ рдХреЛрдгреАрдп / рдХреЛрдгреАрдп-рдХреНрд▓реА # 9358 (рдЯрд┐рдкреНрдкрдгреА) рдореЗрдВ рд╕реБрдЭрд╛рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрд╕рдлрд▓ рд░реВрдк рд╕реЗред

рдореЗрд░рд╛ рдкрд░рд┐рджреГрд╢реНрдп рдиреАрдЪреЗ рд╣реИ:

> ng --version
Angular CLI: 6.1.4
Node: 10.4.1
OS: win32 x64
Angular: 6.1.4
... animations, cli, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

Package                            Version
------------------------------------------------------------
@angular-devkit/architect          0.7.4
@angular-devkit/build-angular      0.7.4
@angular-devkit/build-ng-packagr   0.7.5
@angular-devkit/build-optimizer    0.7.4
@angular-devkit/build-webpack      0.7.4
@angular-devkit/core               0.7.4
@angular-devkit/schematics         0.7.4
@angular/cdk                       6.4.6
@angular/flex-layout               6.0.0-beta.17
@angular/material                  6.4.6
@ngtools/json-schema               1.1.0
@ngtools/webpack                   6.1.4
@schematics/angular                0.7.4
@schematics/update                 0.7.4
ng-packagr                         3.0.6
rxjs                               6.2.2
typescript                         2.7.2
webpack                            4.9.2

рдореЗрд░рд╛ рдХреЛрдб:

import { NgModule, ModuleWithProviders, InjectionToken } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppSettingsService } from './services/app-settings.service';

export const AppSettingsObject = new InjectionToken('AppSettingsObject');

export function createAppSettingsService(settings) {
  return new AppSettingsService(settings);
}

@NgModule({
  imports: [
    CommonModule
  ]
})
export class AppSettingsModule {
  static forRoot(config: Object): ModuleWithProviders {
    return {
      ngModule: AppSettingsModule,
      providers: [
        { provide: AppSettingsObject, useValue: config },
        {
          provide: AppSettingsService,
          useFactory: (createAppSettingsService),
          deps: [AppSettingsObject]
        }
      ]
    };
  }
}

рддреНрд░реБрдЯрд┐:

> ng build my-app --prod

Date: 2018-08-29T
Hash: saghsh4ty463f34r4fef
Time: 8585ms
chunk {0} runtime.xxx.js (runtime) 1.05 kB [entry] [rendered]
chunk {1} styles.xxx.css (styles) 102 kB [initial] [rendered]
chunk {2} polyfills.xxx.js (polyfills) 130 bytes [initial] [rendered]
chunk {3} main.xxx.js (main) 128 bytes [initial] [rendered]

ERROR in Error during template compile of 'MyAppModule'
  Function calls are not supported in decorators but 'AppSettingsModule' was called.

рдХреЛрдИ рдорджрдж?

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рд╣реИ?

рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдореБрджреНрджрд╛ рд░рдЦрд╛ рдФрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред рдЗрд╕рдиреЗ рдПрдХ рдкреВрд░реЗ рджрд┐рди рдорд╛рд░ рдбрд╛рд▓рд╛ (рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж ...) рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛ рдЧрдпрд╛ рд╣реВрдВред

(рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, angularCompilerOptions, рдпрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ, рдЗрддреНрдпрд╛рджрд┐ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рднреА рд░рд╛рд╢рд┐ рдХрд╛ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдерд╛)ред

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

рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдлреЙрд░рд░реВрдЯ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рдмрд╛рдд (рдиреАрдЪреЗ рд╕рд░рд▓реАрдХреГрдд рдХреЛрдб) рдХреА рдереАред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ forRoot рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ ngModule deco рдирд╣реАрдВ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ forRoot рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдПрдХ рд▓реМрдЯрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ рдкреВрд░реНрдг рд╣реИ, рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрд░реЗ "TS рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ" рдХреЛрдгреАрдп рджрд┐рдиреЛрдВ рдореЗрдВ рдЖрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдБ рдЖрдк рд╕рднреА рдлреИрдВрд╕реА рдбрд┐рдХреЛрд╕ рдирд╣реАрдВ рд╣реИ):

static forRoot ( environment ): ModuleWithProviders {
     <strong i="9">@NgModule</strong> ( {
        imports: [ environment.production ? ThisModule : ThatModule ],
        providers: [ Provider1, Provider2 ]
      } )
     class ConfiguredMod {}
     return { ngModule: ConfiguredMod }
}

рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд┐рдпрд╛ ... рдЬрдм рддрдХ --рдкреНрд░реЛрдбред рдлрд┐рд░ рднрдпрд╛рдирдХ рддреНрд░реБрдЯрд┐ рд╣рдо рд╕рднреА рдпрд╣рд╛рдБ рджреЗрдЦрддреЗ рд╣реИрдВред

рд╕рдм рдХреБрдЫ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкрдврд╝рдирд╛ рд╣реИ (рдкреВрд░реЗ рдХреЛрдгреАрдп рдХрдВрдкрд╛рдЗрд▓рд░ рдбреЙрдХ рд╕рд╣рд┐рдд), рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛, рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ред рд╕реБрдВрджрд░ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдерд╛, рдореЗрд░реА "рд╕реБрдкрд░ рдЯреВрд▓реАрдВрдЧ рдореЛрдиреЛ рд░реЗрдкреЛ" рд░рдгрдиреАрддрд┐ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ:

    <strong i="15">@NgModule</strong> ( {
        imports: [ THISModule ],
        providers: [ Provider1, Provider2 ]
      } )
     export class ConfiguredTHISMod {}

    <strong i="16">@NgModule</strong> ( {
        imports: [ THATModule ],
        providers: [ Provider1, Provider2 ]
      } )
     export class ConfiguredTHATMod {}
    ....
    static forRoot ( environment ) {
        return { ngModule: ( environment.production ? ConfiguredTHISMod : ConfiguredTHATMod ) };
    }

рдЕрдЧрд░ рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛:

    static forRoot ( environment ) {
        const mod = environment.production ? ConfiguredTHISMod : ConfiguredTHATMod;
        return { ngModule: mod };
    }

рдпрд╛ рдЗрд╕ рддрд░рд╣ рдЖрдиреЗ рд╡рд╛рд▓реА рдкрд░реНрдпрд╛рд╡рд░рдг рд╡рд╕реНрддреБ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛:

    static forRoot ( environment ) {
        environment = ( environment && 'production' in environment ? environment : { production : false } );
       return { ngModule: ( environment.production ? ConfiguredTHISMod : ConfiguredTHATMod ) };
    }

рдпрд╣ рдлрд┐рд░ рдЯреВрдЯ рдЧрдпрд╛ред

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

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдБ рдХрд┐рд╕реА рдХреЛ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдЕрднреА рднреА рдХреЛрдгреАрдп 5.2.11 рдкрд░ рдЦреБрд▓рд╛ рд╣реИ ... рдЗрд╕ рдкрд░ рдХреЛрдИ рдЦрдмрд░?
@ рдПрд▓рди- agius4
рдХреНрдпрд╛ рдЗрд╕ рдмрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рд┐рдпрд╛ рдХрдо рд╣реИ?

рд╡реЗ рд╢рд╛рдпрдж рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдЬрдм рддрдХ рдХрд┐ рдЖрдЗрд╡реА рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рд╣реИ (рдХреЛрдгреАрдп 9)ред рдЙрдирдХреЗ рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, 2020 2020 рд╕реЗ рдкрд╣рд▓реЗ рдлрд┐рдХреНрд╕ рдХреА рдЙрдореНрдореАрдж рди рдХрд░реЗрдВ

рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рджреЗрдЦрд╛ред

рдПрдХ forRoot рдХреЗ рдЕрдВрджрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреЗрдмреБрд▓рд░ / рдСрд░реНрдЯреЛрд░ рдкреИрдХреЗрдЬ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдРрд╕рд╛ рдХреИрд╕реЗ рдХрд┐рдпрд╛ ? рдореИрдВрдиреЗ рдЗрд╕ рдкреИрдХреЗрдЬ рд╕реЗ рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдИ рдФрд░ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рд╣реИ ... рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХреНрдпрд╛ рдпрд╛рдж рдХрд┐рдпрд╛ред

рдиреЗрдмреБрд▓рд░ / рдСрд░реНрдХрд┐рдЯ рдЧрд┐рдЯ:
https://github.com/akveo/nebular/blob/master/src/framework/auth/auth.module.ts

рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдХреНрдпреЛрдВ рдпрд╣ рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

@ stoto34 ... рд╡реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЖрдк рдХрд╣рд╛рдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рд╕реАрдзреЗ рдХрд╛рд░реНрдп рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ?

@ mlc-mlapis рдЬрдм рдЖрдк рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдореЗрд░реЗ app.module рдХрд╛ рдПрдХ рдирдореВрдирд╛ рд╣реИ (рдореИрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг oauth2 рдХреЗ рд▓рд┐рдП рдиреЗрдмреБрд▓рд░ рдирд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ):

https://stackoverflow.com/questions/55125982/aot-build-error-function-calls-are-not-supported-in-decorators

@ stoto34 ... рдпрд╣ рдЕрдВрддрд░ environment.BASE_URI + environment.ENDPOINT_CONFIGS.ADMIN рдФрд░ environment.BASE_URI + environment.ENDPOINT_CONFIGS.GRAPHQL ред

@ mlc-mlapis рдореИрдВ рдорд╛рдлреА рдЪрд╛рд╣рддрд╛ рд╣реВрдБ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрдкрдХрд╛ рдЬрд╡рд╛рдм рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИред рдпреЗ рд╕рд┐рд░реНрдл рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдореВрд▓реНрдп рд╣реИрдВ, рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ aot рдмрд┐рд▓реНрдб рдХреЛ рдХреНрдпреЛрдВ рддреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛?

NbOAuth2AuthStrategy.setup рдлрд╝рдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рднреА рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред App.module рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ

@ stoto34 ... рдХреНрдпреЛрдВрдХрд┐ environment.BASE_URI + environment.ENDPOINT_CONFIGS.ADMIN рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ ... рдЬрд┐рд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рди рдХрд┐рд╕реА рддрд░рд╣ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ ... рдФрд░ рдПрдУрдЯреА рд╕рдВрдХрд▓рдХ рдХрд┐рд╕реА рднреА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХреЛрдб рдирд╣реАрдВ рдЪрд▓рд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдордЭрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╢реБрджреНрдз рдХреЛрдб рд╕реЗ рдХреНрдпрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддрд╛ рд╣реИред

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

@ stoto34 ... рдЖрд╣, рдФрд░ рдпрд╣ рдХреНрдпрд╛ ... рдлрд┐рд░, рдирд┐рд░реНрдпрд╛рдд рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

provide: NB_AUTH_TOKEN_INTERCEPTOR_FILTER, useValue: function (req: HttpRequest<any>) {...}

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

    "angularCompilerOptions": {
        "fullTemplateTypeCheck": true
    }

... рдореЗрд░реА tsconfig.json рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдПред рдЗрд╕рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рд╣реИ ...

Note: It is recommended to set this to true because this option will default to true in the future.

рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рджрдлрди рд╣реЛ рдЬрд╛рдПред :)

рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрдпрд╛, рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝реА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдФрд░ "рд╕рдордЭрд╛рддрд╛ рд╣реИ" рдХрд┐ рдореЗрд░реЗ рдКрдкрд░ рдореЗрд░реЗ рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡ рд╕реЗ рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпреЛрдВ рд╢реБрд░реВ рд╣реБрдЖред рдКрдкрд░ рдореЗрд░рд╛ рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рдерд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрдорд╛рд░рдд рдмрдирд╛рдо рд╕реЗрд╡рд╛рд░рдд рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ tsconfig.json рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реАред рдЗрд╕рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ --ts--config <tsconfig.json> рдЬреЛрдбрд╝рд╛ред рдореИрдВ рдЗрд╕ рдЕрдиреНрдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдЕрдм рдПрдХ рдЕрд▓рдЧ рддреНрд░реБрдЯрд┐ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдФрд░ рдЗрд╕реЗ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдЦреЛрдЬрд╛ рдХрд┐ ...

ng build

рддрдерд╛

ng build --ts-config tsconfig.json

рдЕрд▓рдЧ рдкрд░рд┐рдгрд╛рдо рджреЗрдВ! рдХреНрдпрд╛? рдореИрдВ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ json рдлрд╝рд╛рдЗрд▓ рдкрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ рдкрд╣рд▓рд╛ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ рдореБрдЭреЗ рдореЗрд░реА рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИред рдЙрд╕ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

рдореЗрд░реА рдЕрдиреНрдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ tsconfig.json рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ json рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рд╡рд┐рдлрд▓ рд░рд╣рд╛, рдореБрдЭреЗ рдЕрдкрдиреЗ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА ...

    "angularCompilerOptions": {
        "skipTemplateCodegen": true,
        "strictMetadataEmit": true,
        "fullTemplateTypeCheck": true
    }

... рдХреГрдкрдпрд╛ рдирд╣реАрдВ рдкреВрдЫреЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рдХреНрдпреЛрдВ рд╣реИред :) рдЕрдЧрд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ рддреЛ рддреНрд░реБрдЯрд┐ рдореБрдЭреЗ рдЕрд▓рдЧ рдереА рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдереА ред

fullTemplateTypeCheck: Cannot read property 'type' of null

@ crowmagnumb рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреА tsconfig.json рдореВрд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрдЪреНрдЪрд╛ lib/tsconfig.lib.json

рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: https://github.com/angular/angular-cli/blob/a13924364482cbf9a61ba4c3ac1171d3feaf8034/tests/angang_devkit/build_ng_packagr/ng-packaged/projects/lib/tsbfigfig

{
  "extends": "./tsconfig.dist.json",
  "compilerOptions": {
   // ...
  },
  "angularCompilerOptions": {
    "annotateForClosureCompiler": true,
    "skipTemplateCodegen": true,
    "strictMetadataEmit": true,
    "fullTemplateTypeCheck": true,
    "strictInjectionParameters": true,
    "enableResourceInlining": true
  },

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

enable-angular-compiler-annotation.5.2.9.patch
enable-angular-compiler-annotation.5.2.10.patch
enable-angular-compiler-annotation.6.0.1.patch
enable-angular-compiler-annotation.6.0.2.patch
enable-angular-compiler-annotation.6.1.10.patch
enable-angular-compiler-annotation.7.1.0.patch

рдкреИрдЪ рдлрд╝рд╛рдЗрд▓ рд▓рдЧрднрдЧ рдЗрд╕ рддрд░рд╣ рд╣реИ

Index: node_modules/@angular/compiler/bundles/compiler.umd.js
IDEA additional info:
<+>UTF-8
===================================================================
--- node_modules/@angular/compiler/bundles/compiler.umd.js  (date 1543397797000)
+++ node_modules/@angular/compiler/bundles/compiler.umd.js  (date 1543398810000)
@@ -24526,6 +24526,14 @@
             this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Self'), createSelf);
             this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'SkipSelf'), createSkipSelf);
             this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Optional'), createOptional);
+            this._registerDecoratorOrConstructor(this.findDeclaration('@pkg/transform-proxy', 'TPProxyParam'), makeMetadataFactory('TPProxyParam'));
+            this._registerDecoratorOrConstructor(this.findDeclaration('@pkg/transform-proxy', 'TPProxyRequestBody'), makeMetadataFactory('TPProxyRequestBody'));
+            this._registerDecoratorOrConstructor(this.findDeclaration('@pkg/transform-proxy', 'TPProxyRequest'), makeMetadataFactory('TPProxyRequest'));
         };
...
...
...

sh.exec( рдкреИрдЪ -p0 -i рдЯреВрд▓ / cli-рдкреИрдЪ / рд╕рдВрд╕реНрдХрд░рдг / рд╕рдХреНрд╖рдо-рдХреЛрдгреАрдп-рд╕рдВрдХрд▓рдХ-рдПрдиреЛрдЯреЗрд╢рдиред $ {рд╕рдВрд╕реНрдХрд░рдг}ред );

@LinBoLen рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдкреАрдЖрд░ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдиреЛрдЯреЗрд╢рди рдЪреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд╢рд╛рд╡рд╛рджреА рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╢рд╛рдпрдж рдХреЛрдгреАрдп рд╕рдВрдХрд▓рдХ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╢рд╛рд╡рд╛рджреА рд╢реНрд╡реЗрддрд╕реВрдЪреА (рд╕рдХреНрд╖рдо рд╕реВрдЪреА) рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдорджрдж рдорд┐рд▓рддреА рд╣реИ

import { someCoreModule } from '@myPackage/core';

export const someCoreModuleforRoot = someCoreModule.forRoot(); // Without "export" build will crash

@NgModule({
    imports: [
        someCoreModuleforRoot
    ]
})
export class MyModule {
}
"ng-packagr": "4.2.0"
"@angular/cli": "7.3.8"

рдореИрдВрдиреЗ рдКрдкрд░ рдХреА рдмрд╛рддрдЪреАрдд рд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рдкреНрд░рд╛рдкреНрдд рдХреА, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдУрдЯреА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдлреБрд▓рдЯрдордкреНрд▓реЗрдЯ рдЯрд╛рдЗрдк рдЪреЗрдХ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╣реЛрддрд╛ рд╣реИред https://github.com/Saad-Amjad/session-manager рдФрд░ рдпрд╣рд╛рдБ рдХреЛрдб рдХреЗ рдЯреВрдЯрдиреЗ: https://medium.com/monstar-lab-bangladesh-engineering/making-configurable-angular-feature-modules-using-strategy -рдкреИрдЯрд░реНрди-рдмреА 8 рдПрдл 43340550 рдП

рдореИрдВ public_api.ts рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреБрдирдГ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдХреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рд╣реВрдВ

рдореБрджреНрджреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:

рдлрд╝рд╛рдЗрд▓ ~ / lib / index.ts
export * from './sample/data.component';

рдлрд╝рд╛рдЗрд▓ ~ / public_api.ts
export * from './lib';

рдпрд╣ ng build --prod --aot=false рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ ng build --prod рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ ...

рддреИ рд╣реЛрдирд╛:
рдлрд╝рд╛рдЗрд▓ ~ / public_api.ts
export * from '.lib/sample/data.component;'

рдирдорд╕реНрддреЗ,

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

@ рдЖрдкрд╛рдзрд╛рдкреА- pl

рдореИрдВрдиреЗ рдЕрдкрдиреЗ public_api рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдХрд╛рдо рдХрд┐рдпрд╛

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рд╣рд░ рдШрдЯрдХ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ public_api рдореЗрдВ рд╕реЗрд╡рд╛ рдЧрдВрджреА рд╣реЛ рдЬрд╛рдПрдЧреА

рддреБрдо рдХреИрд╕реЗ рд╕реЛрдЪрддреЗ рд╣реЛ?

--aot=false vs export all of module in the public_api

рдореЗрд░рд╛ рдорд╛рдирдирд╛ рд╣реИ рдХрд┐ AOT рд▓рд╛рдн рдХрд╛ рдПрдХ рдмрд╣реБрдд рдХреБрдЫ рд╣реИ, рдЬреЛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖ рд░рд╣реА рд╣реИ, export рдореЗрдВ рдмрдпрд╛рди public_api.ts рднреБрдЧрддрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рд╕реА рдХреАрдордд рдлрд╝рд╛рдЗрд▓ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ public_api.ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдФрд░ рд╕реЗрд╡рд╛ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЛрдгреАрдп рдореЙрдбреНрдпреВрд▓ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдХреЛрдВ, рд╕реЗрд╡рд╛рдУрдВ, рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛрдб рдХреЛ "рдореЙрдбреНрдпреВрд▓-рдлрд╝реЛрд▓реНрдбрд░реНрд╕" рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реВрдВред рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓-рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ index.ts рдлрд╝рд╛рдЗрд▓ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╕рднреА рдШрдЯрдХреЛрдВ, рд╕реЗрд╡рд╛рдУрдВ, рдЖрджрд┐ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреА рд╣реИред рд╡рд╣ рдлрд╝реЛрд▓реНрдбрд░ред

public_api.ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдкреНрд░рддрд┐ рдореЙрдбреНрдпреВрд▓-рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдирд┐рд░реНрдпрд╛рдд рд╣реЛрддреЗ рд╣реИрдВред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

// public_api.ts

// Export from the Dialog module-folder
export * from './my-dialog-module/';                  // Export all components, services, etc.
export * from './my-dialog-module/my-dialog.module';  // Export the Angular module

// Export from the Auth module-folder
export * from './my-auth-module/';                    // Export all components, services, etc.
export * from './my-auth-module/my-auth.module';      // Export the Angular module

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

рдЬрдм рднреА рдореИрдВрдиреЗ рдЗрд╕реЗ рджреЗрдЦрд╛ рд╣реИ (рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрд╛рдлреА рд╣рдж рддрдХ рджреЗрдЦрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рдЬрдм рдПрдХ рдкреБрд░рд╛рдиреЗ рдРрдк рдХреЛ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпрд╛ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдПрдХ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдЬрд╣рд╛рдВ рджреЗрд╡ рдиреЗ рдмреИрд░рд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдХреА рд╣реИ), рдореИрдВ рдЗрдВрдЬреАрдирд┐рдпрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдирд╛рдорд┐рдд рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдХреЗ рдФрд░ рдХрд┐рд╕реА рднреА "рд╕рднреА" рдЖрдпрд╛рдд рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдХреЗ рдЗрдВрдЬреАрдирд┐рдпрд░ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрд░реЛрдХреНрдд рдореЗрдВ, рдореЗрд░реА-рдбрд╛рдпрд▓реЙрдЧ-рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓ рд╣реЛрдЧреА, рдЬреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреА рд╣реИред рдХрд┐рд╕реА рднреА рдШрдЯрдХ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп [рдирд┐рд░реНрдпрд╛рдд] рдПрдкреАрдЖрдИ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рдФрд░ (рдпрджрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдПрдиреБрдо рдпрд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдореИрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛) рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (my.enum.ts рд╕реЗ рдирд┐рд░реНрдпрд╛рдд *)ред

рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмреИрд░рд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдореБрд╢реНрдХрд┐рд▓реЛрдВ рдХреЛ рджреВрд░ рдХрд░ рд╕рдХрддреА рд╣реИред

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

рдореЗрд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП forRoot() рд╕реНрдерд┐рд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдареАрдХ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ 8.2 рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо рд╕рдВрдХрд▓рд┐рдд рдПрдХ рдХреЛрдгреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереА, рд▓реЗрдХрд┐рди рдпрд╣ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рдЬреИрд╕реЗ рд╣реА рдореИрдВрдиреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 8.3 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред

рддреНрд░реБрдЯрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рдереА:

ERROR in Error during template compile of 'MainModule'
  Function calls are not supported in decorators but 'LoggerModule' was called.
Unexpected value 'undefined' imported by the module 'MainModule in src/app/main/main.module.ts'
Error during template compile of 'MainModule'
  Function calls are not supported in decorators but 'LoggerModule' was called.

MainModule рдореЗрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╣реИ, рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ LoggerModule рдерд╛ред рдкреБрд╕реНрддрдХрд╛рд▓рдп 8.0 рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ 8.2 рддрдХ рдХреЗ рдРрдкреНрд╕ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 8.3 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд╕рд╛рде рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рд╡реЗ рдЪрд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдкрдХреЗ рд╕рд╛рде рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ:

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ tsconfig.lib.json рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВ

  "angularCompilerOptions": {
    "annotateForClosureCompiler": true,
    "skipTemplateCodegen": true,
    "strictMetadataEmit": true,
    "fullTemplateTypeCheck": true,
    "strictInjectionParameters": true,
    "enableResourceInlining": true
  },

рдЕрдм NgModule рдЬреЛ рд╕реНрдереИрддрд┐рдХ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рдирд┐рдореНрди

  • рдЖрдкрдХреЗ рдкрд╛рд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдХреЛрдИ рд╕реНрд░реЛрдд рдХреЛрдб рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ return рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ ModuleWithProviders рдСрдмреНрдЬреЗрдХреНрдЯ рджреЗрддрд╛ рд╣реИред
  • рдЖрдк рдХрд┐рд╕реА рднреА providers рд╕рд╛рде рдПрдХ рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ
  • рдХрд┐рд╕реА рднреА рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ providers рдПрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП export рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдореЗрдВ рдЙрдЬрд╛рдЧрд░ рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ public_api
  • рдореБрдЭреЗ рдЕрдкрдиреЗ @NgModule() рдКрдкрд░ // @dynamic рдЬреЛрдбрд╝рдирд╛ рдерд╛
  • рдЖрдк providers рдХреА рд╕рд░рдгреА рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
  • рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд░рд┐рдЯрд░реНрди рдореВрд▓реНрдп ModuleWithProviders<LoggerModule> рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝рд╛

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

рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ LoggerModule рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

export const LOGGER_OPTIONS: InjectionToken<LoggerConfig> = new InjectionToken<LoggerConfig>('LOGGER_OPTIONS');

export function LogServiceFactory(
    levels: LOGGER_LEVEL,
    console: ConsoleMethods<void>,
    prefixService: PrefixService,
    loggerConfig: LoggerConfig
) {
    return loggerConfig && loggerConfig.enabled
        ? new LogConsoleService(levels, console, prefixService)
        : new LogNoopService();
}

// <strong i="8">@dynamic</strong>
@NgModule({})
export class LoggerModule {
    public static forRoot(loggerConfig?: LoggerConfig): ModuleWithProviders<LoggerModule> {
        return {
            ngModule: LoggerModule,
            providers: [
                {provide: LOGGER_LEVELS, useValue: loggerConfig.levels || LOGGER_ALL},
                {provide: LOGGER_TAILS, useValue: loggerConfig.tails || LOGGER_TAILS_DEFAULT},
                {provide: LOGGER_CONSOLE, useValue: loggerConfig.console || console},
                {provide: LOGGER_OPTIONS, useValue: loggerConfig || {}},
                {
                    provide: LogService,
                    useFactory: LogServiceFactory,
                    deps: [LOGGER_LEVELS, LOGGER_CONSOLE, PrefixService, LOGGER_OPTIONS]
                }
            ]
        };
    }
}

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

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

@NgModule()
export class LoggerModule {
    public static forRoot(options?: LoggerConfig): ModuleWithProviders {
        options = Object.assign({
            enabled: true,
            levels: LOGGER_ALL,
            tails: LOGGER_TAILS_DEFAULT,
            console: console
        } as LoggerConfig, options || {});

        const providers: Provider[] = [
            {provide: LOGGER_LEVELS, useValue: options.levels},
            {provide: LOGGER_TAILS, useValue: options.tails},
            {provide: LOGGER_CONSOLE, useValue: options.console}
        ];

        if (options && options.enabled) {
            providers.push({provide: LogService, useClass: LogConsoleService});
        } else {
            providers.push({provide: LogService, useClass: LogNoopService});
        }

        return {ngModule: LoggerModule, providers};
    }
}

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдореБрджреНрджрд╛ рдореЗрд░реЗ рдХрд╛рдо рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ рдХреЛрдб рд╕реЗ рдЖрдпрд╛ рд╣реИ:

// app-injector.ts

import { Injector } from '@angular/core';

export let AppInjector: Injector;

export function setAppInjector(injector: Injector) {
  AppInjector = injector;
}
// lib.module.ts

import { Injector, ... } from '@angular/core';
import { setAppInjector } from './app-injector';
...
@NgModule()
export class LibModule {
  constructor(injector: Injector) {
    setAppInjector(injector);
  }
}

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╕рдордЭрд╛ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рдореИрдВ рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛:

// app-injector.ts

import { Injector } from '@angular/core';

// <strong i="11">@dynamic</strong>
export class AppInjector {

  private static injector: Injector;

  static setInjector(injector: Injector) {
    AppInjector.injector = injector;
  }
}
// lib.module.ts

import { Injector, ... } from '@angular/core';
import { AppInjector } from './app-injector';
...
@NgModule()
export class LibModule {
  constructor(injector: Injector) {
    AppInjector.setInjector(injector);
  }
}

рдЬрдм рдореИрдВ Angular 9 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рддрдм рдореИрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЧрдпрд╛ рдерд╛ред рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреА @codemile рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛, рдореБрдЭреЗ рдЕрднреА рднреА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рд╣реИред рдпрд╣ рдЖрдЗрд╡реА рдХреЗ рд╕рд╛рде рдПрдХ рдореБрджреНрджрд╛ рдирд┐рдХрд▓рд╛ :(

Ivy рдХреЛ рдореЗрд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ tsconfig.lib.json рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЧрдпрд╛ред

"angularCompilerOptions": {
        "skipTemplateCodegen": true,
        "strictMetadataEmit": true,
        "fullTemplateTypeCheck": true,
        "strictInjectionParameters": true,
        "enableResourceInlining": true,
        "enableIvy": false
},

рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЖрдЗрд╡реА рдЯреЙрдЧрд▓ рдХрд░реЗрдВ

`` `
"angularCompilerOptions": {
"SkipTemplateCodegen": рд╕рдЪ рд╣реИ,
"рд╕рдЦреНрдд рдордорддрд╛рджрддреНрдд": рд╕рдЪ,
"fullTemplateTypeCheck": рд╕рдЪ,
"enableResourceInlining": рд╕рдЪ рд╣реИ,
"enableIvy": рдЧрд▓рдд
}

"angularCompilerOptions": {
"SkipTemplateCodegen": рд╕рдЪ рд╣реИ,
"рд╕рдЦреНрдд рдордорддрд╛рджрддреНрдд": рд╕рдЪ,
"enableResourceInlining": рд╕рдЪ рд╣реИ,
"рд╕рдХреНрд╖рдо": рд╕рдЪ
}
`` `

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЖрдЗрд╡реА рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдЖрдЗрд╡реА рдЙрддрд░рд╛ рд╣реИред
рдХреНрдпрд╛ рдХреЛрдИ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ?

рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдореВрд▓ рдХрд╛рд░рдг рдкрд░ 2018 рдореЗрдВ рдПрдирдЬреА-рдкреИрдХрдЧреНрд░реЗ рдкреАрдЖрд░ рдореЗрдВ рдЕрдкрдиреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд┐рдпрд╛ред рдЖрдЗрд╡реА рдХреЗ рд╕рд╛рде, рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рднреА рд╕реЗрд╡рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрдм рдЖрдЗрд╡рд░реА рдХреЗ рд╕рд╛рде рдХреЛрдгреАрдп 9.0 рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред

рд╡рд╛рд░реНрдб рдХреЗ repro рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: @wardbell

angularCompilerOptions рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрд┐рд▓реНрдб рд╕рдлрд▓ / рд╡рд┐рдлрд▓ рд╣реЛрдЧрд╛ред рдЗрд╕ рд░реЗрдкреНрд░реЛ рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдЬреЛрдбрд╝рд╛

рд╕рдлрд▓рддрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ

    "skipTemplateCodegen": true,
    "strictMetadataEmit": true,
    "fullTemplateTypeCheck": true
    "skipTemplateCodegen": false,
    "strictMetadataEmit": false
    "skipTemplateCodegen": false,
    "strictMetadataEmit": true,
    // fullTemplateTypeCheck omitted (= default value)

рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ

    "skipTemplateCodegen": true,
    "strictMetadataEmit": true,
    // fullTemplateTypeCheck omitted (= default value)
    "skipTemplateCodegen": true,
    "strictMetadataEmit": false
    // fullTemplateTypeCheck omitted (= default value)

рдЕрд╡рд▓реЛрдХрди

рд╡рд╛рд░реНрдб рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, "skipTemplateCodegen": true рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ "fullTemplateTypeCheck": true рдХреЛ рднреА ngc рдХреЗ рд╕рд╛рде рд╕рдлрд▓рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рд╛рдЗрдб рдиреЛрдЯреНрд╕ / рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░

рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ "рдПрдУрдЯреА рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ" ( рдХрдВрдкрд╛рдЗрд▓рд░ рдбреЙрдХреНрд╕ рдореЗрдВ "рд╕реНрдерд┐рд░ рдореВрд▓реНрдп рдкреБрдирд░реНрдЬреАрд╡рди рдХреА " ) рддрдХ рдЬрд╛рддреА рд╣реИред Imo, strictMetadataEmit рд╡рд┐рдХрд▓реНрдк рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреБрдЫ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ рдпрд╛ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рд╕рдордЭ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдЯреВрдЯреА рд╣реБрдИ рд╣реИ broken

рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рд╕реЗ рдореИрдВ рдпрд╣ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдЕрдХреНрд╕рд░ static forRoot(): ModuleWithProviders рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдХреЛрдб рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ "рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдпреЛрдЧреНрдп" рдмрди рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдмрдирддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░рд┐рдкреЛрдЬрд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореИрдВ рдХреЛрдб рдХреА рдХреБрдЫ рдЕрд╕реНрдкрд╖реНрдЯ рдпрд╛рджреЛрдВ рдкрд░ рдЕрдЯрдХрд▓реЗрдВ рднреА рдирд╣реАрдВ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдХрд╛рдо рдХрд░рддреЗ / рдЧреИрд░-рдХрд╛рдо рдХрд░рддреЗ рджреЗрдЦрд╛ рд╣реИред

рдХреНрдпрд╛ рдПрдирдЬреАрд╕реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

_ рдХреНрдпрд╛ рдорджрдж рдХрд░реЗрдЧрд╛ рдХрд┐ ngc рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рд▓рд╛рдЗрди рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рддреНрд░реБрдЯрд┐ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред _

рдореИрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реВрдЯрд┐рдВрдЧ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ ... рд▓реЗрдХрд┐рди рдиреАрдЪреЗ рддреНрд░реБрдЯрд┐ (рджреВрд╕рд░рд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ) рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реБрдЖ ... рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдлрд┐рд░ рднреА рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВ рд╣реИ
image

рдпрд╣ рдореЗрд░реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рд╣реИ
image

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

рдпрд╣ рдореБрдЭреЗ рдкрд╛рдЧрд▓ рдмрдирд╛ рд░рд╣реА рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛрдб рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдХреИрд╕реЗ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ? рдФрд░ рдпрд╣ рдореБрджреНрджрд╛ 2 рд╕рд╛рд▓ рдкреБрд░рд╛рдирд╛ рдХреИрд╕реЗ рд╣реИ? рдХреНрдпрд╛ рдореИрдВ рдкрд╛рдЧрд▓ рдЧреЛрд▓рд┐рдпрд╛рдБ рд▓реЗ рд░рд╣рд╛ рд╣реВрдБ?

@ jpike88 рдпреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХрдорд╛рддреНрд░ рдХрджрдо рд╣реИрдВред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ https://github.com/angular/angular/issues/23609#issuecomment -561615821

рд╣рд╛рдп @ jpike88 , рд╕рднреАред

рдпрд╣ рдореБрдЭреЗ рдкрд╛рдЧрд▓ рдмрдирд╛ рд░рд╣реА рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛрдб рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдХреИрд╕реЗ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ?

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

ngc (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рджреГрд╢реНрдп рдЗрдВрдЬрди рд╕рдВрдХрд▓рдХ) рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ "рдореЗрдЯрд╛рдбреЗрдЯрд╛" рдирд┐рдХрд╛рд▓рдиреЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ .ts рдлрд╝рд╛рдЗрд▓ рдПрдХ JSON рд╕рдВрд░рдЪрдирд╛ рдмрди рдЬрд╛рддреА рд╣реИ рдЬреЛ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИред рд╢реЗрд╖ рд╕рдВрдХрд▓рдХ рдЗрд╕ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА (рд▓рд╛рдЗрди / рдХреЙрд▓ рдирдВрдмрд░) _some_ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреИрдкреНрдЪрд░ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рднреА рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЖрдХрд╛рд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреА рдФрд░ рд╕рдВрдХрд▓рдХ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЪреЛрдЯ рдкрд╣реБрдВрдЪреЗрдЧреАред

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

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

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

рдореИрдВрдиреЗ https://github.com/angular/angular/issues/23609#issuecomment -561615821 рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдХреЗ рддреНрд░реБрдЯрд┐ рдареАрдХ рдХреА

  • рдЖрдкрдХреЗ рдкрд╛рд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдХреЛрдИ рд╕реНрд░реЛрдд рдХреЛрдб рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ return рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ ModuleWithProviders рдСрдмреНрдЬреЗрдХреНрдЯ рджреЗрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЗрд╕реЗ рд╣рдЯрд╛рдирд╛ рдкрдбрд╝рд╛

@NgModule({
    imports: [
        // [...]
    ]
})
export class CoreModule implements OnDestroy {

    private static showUserInfo = true;

    static forRoot(options: CoreOptions = {}): ModuleWithProviders<NextCoreModule> {
        // this line caused the error
        // NextCoreModule.showUserInfo = options.showUserInfo ?? true;

        return {
            ngModule: NextCoreModule,
            providers: [
                {
                    provide: APP_INITIALIZER,
                    useFactory: initialize,
                    deps: [
                        ConfigBuilderService, AppKeyService, TranslateService, Title, coreOptionsToken
                    ],
                    multi: true
                },
                { provide: coreOptionsToken, useValue: options || {} }
            ]
        };
    }

    // [...]
}

@kroeder рддреБрдо, рд╕рд░, рдореЗрд░рд╛ рджрд┐рди рдмрдирд╛ рджрд┐рдпрд╛! рдзрдиреНрдпрд╡рд╛рдж!

рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ? рдФрд░ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ?

@JustDoItSascha

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП # 36415 рдФрд░ # 37126 рдкрдврд╝реЗрдВред рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдгреАрдп рд╕рдВрдХрд▓рдХ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ (рдХреЗрд╡рд▓ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рджреНрд╡рд╛рд░рд╛) рдХреЛрдб рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ, рд╕рдордЭрдирд╛ рд╣реЛрдЧрд╛ред

рдореИрдВрдиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд╕рд╛рде RouterModule.forChild(routes) рдХрд╛ рдЖрдпрд╛рдд рдХрд░рдХреЗ:
export const routerModule = RouterModule.forChild(routes);

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

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

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

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

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

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

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