рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ 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.
рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдпрд╣рд╛рдБ
рдореИрдВ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓рддрд╛ рд╣реИред
рдХреЛрдИ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рдореБрдЭреЗ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓рд╛ .... рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЛ
рдЙрдо ... рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рддрдХ 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
) рдЪрд▓рд╛рдПрдВред
рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЖрдкрдХреА рдорджрдж рдЪрд╛рд╣рд┐рдПред
LazyLoadImageModule
рдХреЛ рдХрдИ NgModule
рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ?рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рди рдмрдирд╛рдПрдВ рдмрд▓реНрдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдПрдВ
рдЗрди рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
https://angular.io/guide/creating-lbooks
рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ npm рдкрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
@ рдЗрдорд╛рдиреБрдПрд▓-рдЧреЗрд▓реЙрдЯреА, рдореИрдВ рдЕрдиреБрд╕рд░рдг рдирд╣реАрдВ рдХрд░рддрд╛ред ng-lazyload-image
рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ, рдФрд░ рдЗрд╕реЗ npm рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╣ рдЖрднрд╛рд╕ рд╣реБрдЖ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ ng-lazyload-image
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА ( ng-lazyload-image
) рдХреЛ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ред
рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЖрдк рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ ng-lazyload-image
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдпрд╛ рдХреНрдпрд╛ рдЖрдк рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдореБрдЭреЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдХреЗ рдПрдХ рдирдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдирдП рдмрдирд╛рдП рдЧрдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдХреЛрдб рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рддреНрд░реБрдЯрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм:
рдХреНрдпрд╛ рдЖрдк рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ?
рдореЗрд░реЗ рдкрд╛рд╕ рд░реЗрдкреЛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рдЬреА рд╣реИред
рдЬрдм рдЖрдк рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдЬрдм рдЖрдк рдЙрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдпрд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ?
рдореИрдВрдиреЗ рдЕрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд┐рдпрд╛:
тЭп 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 рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдзрдиреНрдпрд╡рд╛рдж
рдореИрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдХреЛрдИ рдРрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдХреБрдЫ рдЕрд▓рдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдП рд╣реИрдВ рдЬрд╣рд╛рдБ рдореИрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдБ:
ng-lazyload-image
рдЖрдпрд╛рдд рдХрд░рдирд╛: https://github.com/tjoskar/ng-lazyload-image-bugs/tree/master/463-invalid-provider-for-lazyLoadImageHooks-sub-moduleng-lazyload-image
рдХрд╛ рдЖрдпрд╛рдд рдХрд░рдирд╛: https://github.com/tjoskar/ng-lazyload-image-bugs/commit/39b93c932ac02788cb1f92cebe15fb7d1f4e71рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рднреА рдХреБрдЫ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВред
рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ 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 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореБрдЭреЗ рдпрд╣ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдХрд░ рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛:
npm install [email protected]
рдореИрдВ Ionic 5.0.7 / Angular 8.2.14 рдкрд░ рд╣реВрдВ