Ng-lazyload-image: LazzLoadImageHooks рдХреЗ рд▓рд┐рдП рдЕрдорд╛рдиреНрдп рдкреНрд░рджрд╛рддрд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐ред рдпреВрдЬрд╝ рдХреНрд▓рд┐рдХреНрд╕ рдХреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 3 рдЬреВрди 2020  ┬╖  33рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: tjoskar/ng-lazyload-image

рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ Angular9 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдорд┐рд▓реА

ERROR in Invalid provider for LazyLoadImageHooks. useClass cannot be undefined.
           Usually it happens when:
           1. There's a circular dependency (might be caused by using index.ts (barrel) files).
           2. Class was used before it was declared. Use forwardRef in this case.

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

рдореБрдЭреЗ рдпрд╣ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдХрд░ рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛:
npm install [email protected]
рдореИрдВ Ionic 5.0.7 / Angular 8.2.14 рдкрд░ рд╣реВрдВ

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

рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдпрд╣рд╛рдБ

рдореИрдВ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓рддрд╛ рд╣реИред
рдХреЛрдИ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдореБрдЭреЗ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓рд╛ .... рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЛ

рдЙрдо ... рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рддрдХ 7.1.0 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

ng-lazyload-image рдХрд╛ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ ( npm ls ng-lazyload-image рдЪрд▓рд╛рдХрд░ рдЗрд╕рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ)ред

рдХреНрдпрд╛ рдЖрдкрдХреЛ рдпрд╣ рддреНрд░реБрдЯрд┐ рдмрд┐рд▓реНрдб рдЯрд╛рдЗрдо рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрд╕реЛрд▓ рдХреЗ рддрд╣рдд рдорд┐рд▓рддреА рд╣реИ?

рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯрд╛ рд░реЗрдкреЛ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЛрдгреАрдп 9 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: https://github.com/tjoskar/ng-lazyload-image/blob/master/example/package.json рдФрд░ рдореИрдВ рд╡рд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛? рдФрд░ рдЗрд╕ рдХреЛрдб рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ рдирд╣реАрдВ: https://codesandbox.io/s/lazy-load-image-with-httpclient-to538?file=/src/app/app.module.ts (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП)

@tjoskar рдпрд╣ рддреНрд░реБрдЯрд┐ рдмрд┐рд▓реНрдб рдЯрд╛рдЗрдо рдореЗрдВ рд╣реБрдИред

рддреНрд░реБрдЯрд┐: LazyLoadImageHooks рдХреЗ рд▓рд┐рдП рдЕрдорд╛рдиреНрдп рдкреНрд░рджрд╛рддрд╛ред рдпреВрдЬрд╝ рдХреНрд▓рд┐рдХреНрд╕ рдХреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдорддреМрд░ рдкрд░ рдРрд╕рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм:
1. рд╡рд╣рд╛рдБ рдПрдХ рдкрд░рд┐рдкрддреНрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ (index.ts (рдмреИрд░рд▓) рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред
2. рдХрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдШреЛрд╖рд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдЧреЗ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред

рдПрдХ рдЕрдирд╣реЗрд▓реНрджреА рдЕрдкрд╡рд╛рдж рд╣реБрдЖ: LazyLoadImageHooks рдХреЗ рд▓рд┐рдП рдЕрдорд╛рдиреНрдп рдкреНрд░рджрд╛рддрд╛ред рдпреВрдЬрд╝ рдХреНрд▓рд┐рдХреНрд╕ рдХреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдорддреМрд░ рдкрд░ рдРрд╕рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм:
1. рд╡рд╣рд╛рдБ рдПрдХ рдкрд░рд┐рдкрддреНрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ (index.ts (рдмреИрд░рд▓) рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред
2. рдХрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдШреЛрд╖рд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдЧреЗ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред

рдХреЛрдгреАрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рддреЗ рд╕рдордп рдореЗрд░реА рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реИ
рд╕рдВрд╕реНрдХрд░рдг 7 рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ

рдореИрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореИрдВрдиреЗ рдЕрднреА рдПрдХ рдирдпрд╛ рдХреЛрдгреАрдп 9 рдРрдк (9.1.9) рдмрдирд╛рдпрд╛ рд╣реИ:

тЭп ng new my-app

тЭп npm ls @angular/core
[email protected]
тФФтФАтФА @angular/[email protected]

рдореИрдВрдиреЗ рддрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП: https://github.com/tjoskar/ng-lazyload-image-bugs/commit/7fe50bd1631a20e7bcfed82f2a34aca6b50b3333

рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдореБрджреНрджреЗ рдХреЗ npm run build ( ng build ) рдЪрд▓рд╛рдПрдВред

рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЖрдкрдХреА рдорджрдж рдЪрд╛рд╣рд┐рдПред

  1. рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╕реНрдЯрдо рд╣реБрдХ рдмрдирд╛рддреЗ рд╣реИрдВ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреНрдпрд╛ рдЖрдкрдХреЗ рд╣реБрдХ рдореЗрдВ рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ?
  2. рдХреНрдпрд╛ рдЖрдк LazyLoadImageModule рдХреЛ рдХрдИ NgModule рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ?
  3. рдХреНрдпрд╛ рдЖрдк рдПрдХ рд░реЗрдкреЛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рдЖрдк рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ? рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рдХреБрдЫ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рджреЗрдВ рдХрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рди рдмрдирд╛рдПрдВ рдмрд▓реНрдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдПрдВ
рдЗрди рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
https://angular.io/guide/creating-lbooks
рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ npm рдкрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ

@ рдЗрдорд╛рдиреБрдПрд▓-рдЧреЗрд▓реЙрдЯреА, рдореИрдВ рдЕрдиреБрд╕рд░рдг рдирд╣реАрдВ рдХрд░рддрд╛ред ng-lazyload-image рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ, рдФрд░ рдЗрд╕реЗ npm рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╣ рдЖрднрд╛рд╕ рд╣реБрдЖ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ ng-lazyload-image рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА ( ng-lazyload-image ) рдХреЛ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ред

рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЖрдк рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ ng-lazyload-image рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдпрд╛ рдХреНрдпрд╛ рдЖрдк рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдореБрдЭреЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдХреЗ рдПрдХ рдирдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдирдП рдмрдирд╛рдП рдЧрдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдХреЛрдб рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рддреНрд░реБрдЯрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм:

  1. рдореИрдВ рдЕрдкрдиреЗ UI рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рддрд╛ рд╣реВрдВ
  2. рдЖрдпрд╛рдд LazyLoadImageModule
  3. рдореИрдВ рдПрдХ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ npm рдкрд░ рд░рд┐рд▓реАрдЬ рдХрд░рддрд╛ рд╣реВрдВ

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

рдЬрдм рдЖрдк рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдЬрдм рдЖрдк рдЙрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдпрд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ?

рдореИрдВрдиреЗ рдЕрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд┐рдпрд╛:

тЭп ng new my-workspace --create-application=false
CREATE my-workspace/README.md (1028 bytes)
CREATE my-workspace/.editorconfig (274 bytes)
CREATE my-workspace/.gitignore (631 bytes)
CREATE my-workspace/angular.json (136 bytes)
CREATE my-workspace/package.json (1196 bytes)
CREATE my-workspace/tsconfig.json (489 bytes)
CREATE my-workspace/tslint.json (2933 bytes)
тЬФ Packages installed successfully.

тЭп ng generate library my-lib
CREATE projects/my-lib/README.md (986 bytes)
CREATE projects/my-lib/karma.conf.js (1022 bytes)
CREATE projects/my-lib/ng-package.json (155 bytes)
CREATE projects/my-lib/package.json (184 bytes)
CREATE projects/my-lib/tsconfig.lib.json (435 bytes)
CREATE projects/my-lib/tsconfig.lib.prod.json (97 bytes)
CREATE projects/my-lib/tsconfig.spec.json (246 bytes)
CREATE projects/my-lib/tslint.json (247 bytes)
CREATE projects/my-lib/src/public-api.ts (155 bytes)
CREATE projects/my-lib/src/test.ts (781 bytes)
CREATE projects/my-lib/src/lib/my-lib.module.ts (222 bytes)
CREATE projects/my-lib/src/lib/my-lib.component.spec.ts (622 bytes)
CREATE projects/my-lib/src/lib/my-lib.component.ts (264 bytes)
CREATE projects/my-lib/src/lib/my-lib.service.spec.ts (353 bytes)
CREATE projects/my-lib/src/lib/my-lib.service.ts (134 bytes)
UPDATE angular.json (1383 bytes)
UPDATE package.json (1360 bytes)
UPDATE tsconfig.json (588 bytes)
тЬФ Packages installed successfully.

тЭп cd projects/my-lib
тЭп npm install ng-lazyload-image -D
+ [email protected]
added 1 package from 1 contributor and audited 1 package in 1.034s
found 0 vulnerabilities

# I made the following changes: https://github.com/tjoskar/ng-lazyload-image-bugs/commit/1bf60bcbf6133751c41f52cd3d837614dfb60bd0

тЭп cd ../..
тЭп ng build my-lib
Building Angular Package
******************************************************************************
It is not recommended to publish Ivy libraries to NPM repositories.
Read more here: https://v9.angular.io/guide/ivy#maintaining-library-compatibility
******************************************************************************

------------------------------------------------------------------------------
Building entry point 'my-lib'
------------------------------------------------------------------------------
Compiling TypeScript sources through ngc
Bundling to FESM2015
Bundling to FESM5
Bundling to UMD
WARNING: No name was provided for external module 'ng-lazyload-image' in output.globals тАУ guessing 'ngLazyloadImage'
Minifying UMD bundle
Writing package metadata
Removing devDependencies section in package.json.
Built my-lib

------------------------------------------------------------------------------
Built Angular Package
 - from: ng-lazyload-image-bugs/463-invalid-provider-for-lazyLoadImageHook-libs/projects/my-lib
 - to:   ng-lazyload-image-bugs/463-invalid-provider-for-lazyLoadImageHook-libs/dist/my-lib
------------------------------------------------------------------------------

рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ: https://github.com/tjoskar/ng-lazyload-image-bugs/tree/master/463-invalid-provider-for-lazyLoadImageHook-lazs

рдФрд░ рдпрд╣рд╛рдБ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдмрджрд▓рд╛рд╡ рд╣реИрдВ: https://github.com/tjoskar/ng-lazyload-image-bugs/commit/1bf60bcbf6133751c41f52cd3d8376bdfb60bd0

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

рдЬрдм рдореИрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рд╣реА рдореИрдВ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдореБрдЭреЗ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓рд╛ :(ред рдореИрдВ рдЪрд╛рдЗрд▓реНрдб рдореЙрдбреНрдпреВрд▓ рдореЗрдВ LAZY LOAD MODULE рдЬреЛрдбрд╝ рд░рд╣рд╛ рдерд╛

рдореИрдВ Ionic 5, рдХреЛрдгреАрдп 9 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдФрд░ рдЙрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рдж рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ

рд╡рд╣реА рдореБрджреНрджрд╛ред рдИрдУрдг 5 рдФрд░ рд╕реЗрд▓реБрд▓рд░ 9 рдХреЗ рд╕рд╛рде рдРрдк рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ ...

рдореБрдЭреЗ рдпрд╣ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдХрд░ рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛:
npm install [email protected]
рдореИрдВ Ionic 5.0.7 / Angular 8.2.14 рдкрд░ рд╣реВрдВ

рдореБрдЭреЗ рдпрд╣ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдХрд░ рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛:
npm install [email protected]
рдореИрдВ Ionic 5.0.7 / Angular 8.2.14 рдкрд░ рд╣реВрдВ

рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ .. рдзрдиреНрдпрд╡рд╛рдж ....

@ рдбреЗрд╡реА 234 рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдзрдиреНрдпрд╡рд╛рдж

рдореИрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдХреЛрдИ рдРрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдХреБрдЫ рдЕрд▓рдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдП рд╣реИрдВ рдЬрд╣рд╛рдБ рдореИрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдБ:

рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рднреА рдХреБрдЫ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ Ivy рд╕рдХреНрд╖рдо рд╣реИ рдпрд╛ рдирд╣реАрдВ? рдЖрдк ng version рдЪрд▓рд╛рдХрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ? рдпрд╛ рдЖрдк рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ tsconfig.sjon рдореЗрдВ enableIvy рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдФрд░ tsconfig.app.json рдлрд╝рд╛рдЗрд▓реЗрдВред

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ Ivy рд╕рдХреНрд╖рдо рд╣реИ рдпрд╛ рдирд╣реАрдВ? рдЖрдк ng version рдЪрд▓рд╛рдХрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ? рдпрд╛ рдЖрдк рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ tsconfig.sjon рдореЗрдВ enableIvy рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдФрд░ tsconfig.app.json рдлрд╝рд╛рдЗрд▓реЗрдВред

рдореИрдВ рдЕрдкрдирд╛ UI рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдореЗрд░реЗ рдкрд╛рд╕ ivy рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ npm рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 8.0.1 рдХреЗрд╡рд▓ рдЖрдЗрд╡реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдЕрднреА рдХреНрдпреЛрдВред

рдЬрдм рдореБрдЭреЗ IVY рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рддреЛ рдореБрдЭреЗ рдХреЛрдгреАрдп 9 рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓рд╛ред

рдирдорд╕реНрддреЗред рд╕рдорд╕реНрдпрд╛ рддрдм рджрд┐рдЦрд╛рдИ рджреА рдЬрдм рдореИрдВрдиреЗ рдиреЛрдб_рдореЙрдбрд▓ рдФрд░ рд▓реЙрдХ рдлрд╛рдЗрд▓ рдХреЛ рдбрд┐рд▓реАрдЯ рдХрд┐рдпрд╛ рдФрд░ npm рдЗрдВрд╕реНрдЯреЙрд▓ рдФрд░ рдмрд┐рд▓реНрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдпрд╛ред

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдирд╡реАрдирддрдо 8.0.1 рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛

рдЖрдЗрд╡реА рд╕рдХреНрд╖рдо рд╣реИред

рдореИрдВ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг (7.1.0) рдкрд░ рд╡рд╛рдкрд╕ рдЧрдпрд╛ рдФрд░ рдпрд╣ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ, рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдЗрд╡реА рд╕рдХреНрд╖рдо рд╣реИред
рдХреЛрдгреАрдп 9 рдХреЛ рдЪрд▓рд╛рддреЗ рд╕рдордп рд╕рдВрд╕реНрдХрд░рдг 7.1.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░ рд▓рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдм рдЬрдм рдХрд┐ рдХреЛрдгреАрдп 10 рдмрд╛рд╣рд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдиреЛрд▓реЙрдиреНрдЬрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╕рдВрд╕реНрдХрд░рдг 7 рдореЗрдВ "ModWWithProviders;" рдЬрд┐рд╕реЗ рдПрдВрдЧреБрд▓рд░ 10 рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

static forRoot(options: ModuleOptions): ModuleWithProviders;

рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИ
ERROR in Invalid provider for LazyLoadImageHooks. useClass cannot be undefined. Usually it happens when: 1. There's a circular dependency (might be caused by using index.ts (barrel) files). 2. Class was used before it was declared. Use forwardRef in this case.

рд╕реНрд░реЛрдд рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдХреЛрдгреАрдп 10 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ред
ng xi18n --format=xlf2 --output-path src/locales
рддреНрд░реБрдЯрд┐:
ERROR in Invalid provider for LazyLoadImageHooks. useClass cannot be undefined. Usually it happens when: 1. There's a circular dependency (might be caused by using index.ts (barrel) files). 2. Class was used before it was declared. Use forwardRef in this case.

рдЬрдм рдореИрдВ рдЖрдЗрд╡реА рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдХреЗрд╡рд▓ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдПрдХ рдХреЛрдгреАрдп 10 рдРрдк рдмрдирд╛рдпрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдерд╛ рдЬрдм рдореИрдВрдиреЗ Ivy рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рджрд┐рдпрд╛ рдерд╛ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рдереАред

рдореИрдВрдиреЗ рдЕрдм рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рджрд┐рдЦрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмрд┐рдирд╛, рдЖрдЗрд╡реАред рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: npm install [email protected] ред

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

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { LazyLoadImageModule, IntersectionObserverHooks, Attributes } from 'ng-lazyload-image';
import { AppComponent } from './app.component';

class LazyLoadImageHooks extends IntersectionObserverHooks {
  async loadImage({ imagePath }: Attributes): Promise<string> {
    return await fetch(imagePath, {
      headers: {
        Authorization: 'Bearer ...',
      },
    })
      .then((res) => res.blob())
      .then((blob) => URL.createObjectURL(blob));
  }
}

@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule, LazyLoadImageModule.forRoot(LazyLoadImageHooks)],
  bootstrap: [AppComponent],
})
export class MyAppModule {}

рдЙрдкрд░рд╛рдВрдд:

import { NgModule, Injectable } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { LazyLoadImageModule, IntersectionObserverHooks, Attributes, LAZYLOAD_IMAGE_HOOKS } from 'ng-lazyload-image';
import { AppComponent } from './app.component';

@Injectable()
export class LazyLoadImageHooks extends IntersectionObserverHooks {
  async loadImage({ imagePath }: Attributes): Promise<string> {
    return await fetch(imagePath, {
      headers: {
        Authorization: 'Bearer ...',
      },
    })
      .then((res) => res.blob())
      .then((blob) => URL.createObjectURL(blob));
  }
}

@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule, LazyLoadImageModule],
  providers: [{ provide: LAZYLOAD_IMAGE_HOOKS, useClass: LazyLoadImageHooks }],
  bootstrap: [AppComponent],
})
export class MyAppModule {}

рдореБрдЭреЗ рдЖрдЗрд╡реА рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдХреЛрдгреАрдп 10 рдРрдк рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╕рдВрдХрд▓рди рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЙрдкрд░реЛрдХреНрдд рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ ng xi18n рдЖрджреЗрд╢ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред

8.0.2-21 рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реАред

Angular 10
[email protected]

providers: [{ provide: 'LazyLoadImageHooks', useClass: LazyLoadImageHooks }]

рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛

рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг 9.0.0 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

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