Π― ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ 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
).
ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ°?
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠ΅ΠΏΠΎ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ? Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Angular 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. useClass Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ.
ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ Π±ΡΠ²Π°Π΅Ρ ΠΏΡΠΈ:
1. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ (ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΠ»ΠΎΠ² index.ts (Π±ΠΎΡΠΊΠ°)).
2. ΠΠ»Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡΠ» ΠΎΠ±ΡΡΠ²Π»Π΅Π½. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ forwardRef.
ΠΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅: Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΉ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊ Π΄Π»Ρ LazyLoadImageHooks. useClass Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ.
ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ Π±ΡΠ²Π°Π΅Ρ ΠΏΡΠΈ:
1. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ (ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΠ»ΠΎΠ² index.ts (Π±ΠΎΡΠΊΠ°)).
2. ΠΠ»Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡΠ» ΠΎΠ±ΡΡΠ²Π»Π΅Π½. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ forwardRef.
Π£ ΠΌΠ΅Π½Ρ ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ angular
Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ 7 ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ
Π― Π½Π΅ ΠΌΠΎΠ³Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΠΎ. Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π» Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ angular 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/7fe50bd1631a20e7bcfed82f2a34acaeb6b50533
Π Π·Π°ΠΏΡΡΡΠΈΡΠ΅ npm run build
( ng build
) Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΠ½Π΅ Π½ΡΠΆΠ½Π° Π²Π°ΡΠ° ΠΏΠΎΠΌΠΎΡΡ, ΡΡΠΎΠ±Ρ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ.
LazyLoadImageModule
Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ NgModule
?ΠΠΎΡΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ
https://angular.io/guide/creating-libraries
ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π²ΡΠΏΡΡΡΠΈΡΡ Π΅Π³ΠΎ Π² npm
@ emanuele-galeotti, Ρ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ. 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-libs
Π Π²ΠΎΡ Π²Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ ΠΌΠ½ΠΎΠΉ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ: https://github.com/tjoskar/ng-lazyload-image-bugs/commit/1bf60bcbf6133751c41f52cd3d837614dfb60bd0
Π― ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, Π΅ΡΠ»ΠΈ Π²Π°ΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΠ½ΡΠΌΠΈ ΠΈ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ.
ΠΎΠ½ ΡΠ΅ΡΠΏΠΈΡ Π½Π΅ΡΠ΄Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ ΡΠΎΠ·Π΄Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΌΠΎΠ³Ρ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΠΊΠΎΠ΄ΠΎΠΌ.
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° :(. Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» LAZY LOAD MODULE Π² Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Ionic 5, angular 9. ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ
ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ionic 5 ΠΈ andular 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
ΡΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ .. ΡΠΏΠ°ΡΠΈΠ±ΠΎ ....
@ Davei234 ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΡΠΏΠ°ΡΠΈΠ±ΠΎ
Π― Π½Π΅ ΠΌΠΎΠ³Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Π±ΡΠ΄Ρ ΡΠ°Π΄, Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ.
Π― ΡΠΎΠ·Π΄Π°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π½ΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ
ΠΏΡΡΠ°ΡΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΠΎ:
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/39b93c932ac02788cb1f92cebe1c05fb7d1f4e71ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π΄Π°ΠΉΡΠ΅ ΠΌΠ½Π΅ Π·Π½Π°ΡΡ, ΠΌΠΎΠΆΠ΅Ρ Π»ΠΈ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΠΊΠΎΠ΄ΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ ΡΡΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅ΡΠ΅.
ΠΠΊΠ»ΡΡΠ΅Π½ΠΎ Π»ΠΈ Ρ Π²Π°Ρ Ivy
? Π ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, Π·Π°ΠΏΡΡΡΠΈΠ² ng version
. ΠΡΠ»ΠΈ ΠΎΠ½ Ρ Π²Π°Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½, Π΅ΡΡΡ Π»ΠΈ ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ ΠΎΡΠΊΠ»ΡΡΠ΅Π½? ΠΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ? Π― Π½Π΅ Π·Π½Π°Ρ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π½Π°Π»ΠΈΡΠΈΠ΅ enableIvy
Π² ΡΠ°ΠΉΠ»Π°Ρ
tsconfig.sjon ΠΈ tsconfig.app.json
.
ΠΠΊΠ»ΡΡΠ΅Π½ΠΎ Π»ΠΈ Ρ Π²Π°Ρ
Ivy
? Π ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, Π·Π°ΠΏΡΡΡΠΈΠ²ng version
. ΠΡΠ»ΠΈ ΠΎΠ½ Ρ Π²Π°Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½, Π΅ΡΡΡ Π»ΠΈ ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ ΠΎΡΠΊΠ»ΡΡΠ΅Π½? ΠΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ? Π― Π½Π΅ Π·Π½Π°Ρ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π½Π°Π»ΠΈΡΠΈΠ΅enableIvy
Π² ΡΠ°ΠΉΠ»Π°Ρ tsconfig.sjon ΠΈtsconfig.app.json
.
Π― ΡΠΎΠ·Π΄Π°Ρ ΡΠ²ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ ΠΏΠ»ΡΡΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ npm
ΠΠΎΡ
ΠΎΠΆΠ΅, Π²Π΅ΡΡΠΈΡ 8.0.1
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠ»ΡΡΠΎΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ Ρ Π½Π΅ Π·Π½Π°Ρ ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ.
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ angular 9, ΠΊΠΎΠ³Π΄Π° Ρ ΠΎΡΠΊΠ»ΡΡΠΈΠ» IVY.
ΠΡΠΈΠ²Π΅Ρ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π°, ΠΊΠΎΠ³Π΄Π° Ρ ΡΠ΄Π°Π»ΠΈΠ» node_modules ΠΈ ΡΠ°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΡΠ½ΠΎΠ²Π° Π·Π°ΠΏΡΡΡΠΈΠ» npm install ΠΈ ΡΠ±ΠΎΡΠΊΡ.
ΠΠΎ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ 8.0.1
ΠΠ»ΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½.
Π― Π²Π΅ΡΠ½ΡΠ»ΡΡ ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ (7.1.0), ΠΈ ΠΎΠ½Π° ΡΠ½ΠΎΠ²Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΈ Ρ ΠΌΠ΅Π½Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ Ivy.
ΠΠ½ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π΅ΡΡΠΈΡ 7.1.0 ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Angular 9, Π½ΠΎ ΡΠ΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Angular 10 Π²ΡΡΠ΅Π», ΡΡΠΎΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΠ΅ΡΡΠΈΡ 7 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ "ModuleWithProviders;" ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π² Angular 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.
Π’Π° ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ angular 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.
Π― ΠΌΠΎΠ³Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΠΎ, ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° ΠΎΡΠΊΠ»ΡΡΡ ΠΠΉΠ²ΠΈ. Π― ΡΠΎΠ·Π΄Π°Π» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Angular 10, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Ρ ΠΎΡΠΊΠ»ΡΡΠΈΠ» Ivy
Ρ ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΎΡΠΈΠ±ΠΊΡ.
Π― ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ, ΠΏΠΎΡ
ΠΎΠΆΠ΅, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ Ρ 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 {}
Π― Π²ΠΈΠΆΡ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ angular 10 Ρ ivy. ΠΠ΄Π½Π°ΠΊΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° 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