ููู ุงูุนุฏูุฏ ู ู ุงูุฃุดุฎุงุต ุงูุฐูู ุฃูุบูุง ุงุดุชุฑุงูู ู ู ุงูุตุนุจ ุนูููู ููู DI ููุฏุฑุงุชูุง ูู Angular. ูุง ููุฌุฏ ุงููุซูุฑ ู ู ุงูู ูุงุฏ ุนูู ุงูุฅูุชุฑูุช ุญูู ููููุฉ ุงุณุชุฎุฏุงู DI ุจุดูู ูุนุงู ุ ูุจุงููุณุจุฉ ููุนุฏูุฏ ู ู ุงูู ุทูุฑูู ูุชุนูู ุงูุฃู ุฑ ุจุงูุนู ู ู ุน ุงูุฎุฏู ุงุช ุงูุนุงูู ูุฉ ุฃู ุชู ุฑูุฑ ุงูุจูุงูุงุช ุงูุนุงูู ูุฉ ู ู ุฌุฐุฑ ุงูุชุทุจูู ุฅูู ุงูู ูููุงุช.
ุฏุนูุง ูููู ูุธุฑุฉ ุฃุนู ู ุนูู ูุฐู ุงูุขููุฉ ูู Angular.
ูู ุชุนุฑู ุงุฏู ุงููุ
ูู ุจุนุถ ุงูุฃุญูุงู ุ ููุณ ู ู ุงูุณูู ููู ุนุฏุฏ ุงูุชุจุนูุงุช ุงูู ูุฌูุฏุฉ ูู ุงูุชุนููู ุงุช ุงูุจุฑู ุฌูุฉ ุงูุฎุงุตุฉ ุจู.
ุนูู ุณุจูู ุงูู ุซุงู ุ ุฃูู ูุธุฑุฉ ุนูู ูุฐู ุงููุฆุฉ ุงูุฒุงุฆูุฉ ูุงุญุณุจ ุนุฏุฏ ุงูุชุจุนูุงุช ุงูุชู ุชู ุชูููุง:
import { API_URL } from '../../../env/api-url';
import { Logger } from '../../services/logger';
class PseudoClass {
request() {
fetch(API_URL).then(...);
}
onError(error) {
const logger = new Logger();
logger.log(document.location, error);
}
}
ุฅุฌุงุจุฉ
fetch โ API, , , .
API_URL โ ( ).
new Logger() โ , .
document โ API .
API_URL โ ( ).
new Logger() โ , .
document โ API .
ูู ุง ุงูุฎุทุฃุ ู ุง ุงูู ุดููุฉุ
ุนูู ุณุจูู ุงูู ุซุงู ุ ูุตุนุจ ุงุฎุชุจุงุฑ ู ุซู ูุฐู ุงููุฆุฉ ูุฃููุง ุชุนุชู ุฏ ุนูู ุงูุจูุงูุงุช ุงูู ุณุชูุฑุฏุฉ ู ู ู ููุงุช ุฃุฎุฑู ูููุงูุงุช ู ุญุฏุฏุฉ ูููุง.
ู ููู ุขุฎุฑ: ุณูุนู ู ุงูู ุณุชูุฏ ูุงูุฌูุจ ุจุณูุงุณุฉ ูู ู ุชุตูุญู. ูููู ุฅุฐุง ุงุญุชุฌุช ููู ูุง ู ุง ุฅูู ููู ุงูุชุทุจูู ุฅูู Server Side Rendering ุ ููุฏ ูุง ุชููู ุงูู ุชุบูุฑุงุช ุงูุนุงู ุฉ ุงูุถุฑูุฑูุฉ ูู ุจูุฆุฉ nodejs.
ุฅุฐู ู ุง ูู DI ููู ุงุฐุง ูู ู ุทููุจุ
ูููู Dependency Injection ุจุฅุฏุงุฑุฉ ุงูุชุจุนูุงุช ุฏุงุฎู ุงูุชุทุจูู. ุจุงููุณุจุฉ ููุง ุ ูู ุทูุฑูู Angular ุ ูุฅู ูุฐุง ุงููุธุงู ุจุณูุท ุฌุฏูุง. ููุงู ุนู ููุชุงู ุฑุฆูุณูุชุงู: ูุถุน ุดูุก ู ุง ูู ุดุฌุฑุฉ ุงูุชุจุนูุฉ ุฃู ุงูุญุตูู ุนูู ุดูุก ู ููุง.
ููุญุตูู ุนูู ู ูุธูุฑ ุฃูุซุฑ ูุธุฑููุง ุญูู DI ุ ุงูุฑุฃ ุนู ุนูุณ ู ุจุฏุฃ ุงูุชุญูู . ูู ููู ุฃูุถูุง ู ุดุงูุฏุฉ ู ูุงุทุน ููุฏูู ุดููุฉ ุญูู ุงูู ูุถูุน: ุณูุณูุฉ ู ูุงุทุน ููุฏูู ุญูู IoC ู DI ู ู Ilya Klimov ุจุงููุบุฉ ุงูุฑูุณูุฉ ุฃู ู ูุทุน ููุฏูู ูุตูุฑ ุญูู IoC ุจุงููุบุฉ ุงูุฅูุฌููุฒูุฉ.
ูู ุงูุณุญุฑ ูุฃุชู ู ู ุงูุชุฑุชูุจ ุงูุฐู ููุฑุฏ ุจู ููุฃุฎุฐ ุงูุชุจุนูุงุช.
ููู ุชุนู ู ุงููุทุงูุงุช ูู DI:
ู ุงุฐุง ูู ูููุง ุฃู ูุถุน ูู DIุ
ุฃููู ุนู ููุงุช ุดุฑูุฉ DI ูู ุฅุฏุฎุงู ุดูุก ูููุง. ูู ุงููุงูุน ุ ููุฐุง ุงูุบุฑุถ ุ ูุณู ุญ ููุง Angular ุจูุชุงุจุฉ ู ุฌู ูุนุฉ ุงูู ููุฑูู ูู ู ุตู ู ู ูุญุฏุงุชูุง ุฃู ู ูููุงุชูุง ุฃู ุชูุฌููุงุชูุง. ุฏุนููุง ูุฑู ู ุง ูู ูู ุฃู ุชุชููู ู ูู ูุฐู ุงูู ุตูููุฉ.
ุชูููุฑ ุงูุทุจูุฉ
ุนุงุฏุฉู ู ุง ูุนุฑู ูู ู ุทูุฑ Angular ูุฐุง. ูุฐุง ูู ุงูุญุงู ุนูุฏ ุฅุถุงูุฉ ุฎุฏู ุฉ ุฅูู ุชุทุจูู.
ูููุดุฆ Angular ู ุซููุงู ูููุฆุฉ ุนูุฏ ุทูุจู ูุฃูู ู ุฑุฉ. ูู ุน ุงูุฒุงูู 6ุ ูุฅููุง ูู ูู ุฃู ุงูุทุจูุงุช ูุง ููุชุจ ูู ู ุฌู ูุนุฉ ู ุฒูุฏู ุนูู ุงูุฅุทูุงูุ ูููู ุงููู ุงููุฆุฉ ููุณูุง ุนู ู ูุงู ูู DI ูุฌุจ ุฃู ุชุฐูุจ ู ุน providedIn :
providers: [
{
provide: SomeService,
useClass: SomeService
},
// Angular :
SomeService
]
ุชูุฏูู ุงูููู
ูู ูู ุฃูุถูุง ุชูููุฑ ุงูููู ุงูุซุงุจุชุฉ ุนุจุฑ DI. ูู ูู ุฃู ุชููู ุฅู ุง ุณูุณูุฉ ุจุณูุทุฉ ู ุน ุนููุงู URL ููุงุฌูุฉ ุจุฑู ุฌุฉ ุงูุชุทุจููุงุช ุงูุฎุงุตุฉ ุจู ุ ุฃู ุณูุณูุฉ ู ุนูุฏุฉ ูู ูู ู ูุงุญุธุชูุง ู ุน ุงูุจูุงูุงุช.
ุนุงุฏุฉู ู ุง ูุชู ุชูููุฐ ุชูููุฑ ุงูููู ุฌูุจูุง ุฅูู ุฌูุจ ู ุน InjectionToken . ูุฐุง ุงููุงุฆู ูู ู ูุชุงุญ ู ุญุฑู DI. ุฃููุงู ุ ุชููู: "ุฃุฑูุฏ ุงูุญุตูู ุนูู ูุฐู ุงูุจูุงูุงุช ููุฐุง ุงูู ูุชุงุญ." ูุจุนุฏ ุฐูู ุชุฃุชู ุฅูู DI ูุชุณุฃู: "ูู ููุฌุฏ ุดูุก ุนูู ูุฐุง ุงูู ูุชุงุญุ"
ุญุณููุง ุ ุงูุญุงูุฉ ุงูุดุงุฆุนุฉ ูู ุฅุนุงุฏุฉ ุชูุฌูู ุงูุจูุงูุงุช ุงูุนุงูู ูุฉ ู ู ุฌุฐุฑ ุงูุชุทุจูู.
ู ู ุงูุฃูุถู ุฑุคูุชู ุฃุซูุงุก ุงูุนู ู ุนูู ุงูููุฑ ุ ูุฐูู ุฏุนููุง ูููู ูุธุฑุฉ ุนูู stackblitz ุจู ุซุงู:
ุชูุณูุน ุงูู
ุซุงู
ูุฐูู ุ ูู ุงูู ุซุงู ุ ุญุตููุง ุนูู ุชุจุนูุฉ ู ู DI ุจุฏูุงู ู ู ุงุณุชูุฑุงุฏูุง ุจุดูู ุซุงุจุช ู ู ู ูู ุขุฎุฑ ู ุจุงุดุฑุฉู. ููู ุงุฐุง ูู ุฃูุถู ููุงุ
- ูู ูููุง ุชุฌุงูุฒ ููู ุฉ ุงูุฑู ุฒ ุงูู ู ูุฒ ุนูู ุฃู ู ุณุชูู ูู ุดุฌุฑุฉ DI ุฏูู ุชุบููุฑ ุงูู ูููุงุช ุงูุชู ุชุณุชุฎุฏู ูุง.
- ูู ูููุง ุฃู ูุณุฎุฑ ู ู ููู ุฉ ุงูุฑู ุฒ ุงูู ู ูุฒ ุจุงูุจูุงูุงุช ุงูู ูุงุณุจุฉ ุนูุฏ ุงูุงุฎุชุจุงุฑ.
- ุงูู ููู ู ุนุฒูู ุชู ุงู ูุง ูุณูุนู ู ุฏุงุฆู ูุง ุจููุณ ุงูุทุฑููุฉ ุจุบุถ ุงููุธุฑ ุนู ุงูุณูุงู.
ุชุฌููุฒ ุงูู ุตุงูุน
ูู ุฑุฃูู ุ ูุฐู ูู ุฃููู ุฃุฏุงุฉ ูู ู ุญุฑู ุญูู ุงูุชุจุนูุฉ ูู Angular.
ูู ููู ุฅูุดุงุก ุฑู ุฒ ู ู ูุฒ ูููู ูุชูุฌุฉ ุงูุฌู ุน ุจูู ููู ุงูุฑู ูุฒ ุงูู ู ูุฒุฉ ุงูุฃุฎุฑู ูุชุญููููุง.
ููู ุง ููู ู ูู stackbitz ุขุฎุฑ ู ุน ู ุซุงู ุชูุตููู ูุฅูุดุงุก ู ุตูุน ุจุชูุงุฑ.
ุชูุณูุน ุงูู
ุซุงู
ูู ููู ุงูุนุซูุฑ ุนูู ุงูุนุฏูุฏ ู ู ุงูุญุงูุงุช ุนูุฏ ุชูููุฑ ู ุตูุน ููููุช ุฃู ุฌุนู ุงูููุฏ ุฃูุซุฑ ูุงุจููุฉ ูููุฑุงุกุฉ. ูู ุจุนุถ ุงูุฃุญูุงู ูููู ุจุญูู ุงูุชุจุนูุงุช ูู ุงูู ูููุงุช ููุท ู ู ุฃุฌู ุฏู ุฌูุง ุฃู ุชุญููููุง ุฅูู ุชูุณูู ู ุฎุชูู ุชู ุงู ูุง. ูู ุงูู ูุงู ุงูุณุงุจู ุ ูุธุฑุช ุฅูู ูุฐู ุงูู ุดููุฉ ุจู ุฒูุฏ ู ู ุงูุชูุตูู ูุฃุธูุฑุช ููุฌูุง ุจุฏูููุง ูุญู ู ุซู ูุฐู ุงูู ูุงูู.
ุชูููุฑ ู ุซูู ู ูุฌูุฏ
ููุณุช ุญุงูุฉ ุดุงุฆุนุฉ ุ ูููู ูุฐุง ุงูุฎูุงุฑ ูู ูู ุฃู ูููู ุฃุฏุงุฉ ู ููุฏุฉ ููุบุงูุฉ.
ูู ููู ูุถุน ููุงู ุชู ุฅูุดุงุคู ุจุงููุนู ูู ุงูุฑู ุฒ ุงูู ู ูุฒ. ูุนู ู ุจุดูู ุฌูุฏ ู ุน forwardRef .
ุงูุธุฑ ุฅูู ู ุซุงู ุขุฎุฑ ุนูู stackblitz ู ุน ุชูุฌูู ูููู ุจุชูููุฐ ุงููุงุฌูุฉ ูุงุณุชุจุฏุงู ุฑู ุฒ ุขุฎุฑ ุจู useExisting. ูู ูุฐุง ุงูู ุซุงู ุ ูุฑูุฏ ุชุฌุงูุฒ ููู ุฉ ุงูุฑู ุฒ ุงูู ู ูุฒ ูู DI ููุท ููู ูููุงุช ุงููุฑุนูุฉ ููุนูุตุฑ ุงูุฐู ูุนูู ุนููู ุงูุชูุฌูู. ุนูุงูุฉ ุนูู ุฐูู ุ ูู ูู ุฃู ูููู ุงูุชูุฌูู ู ูุฌูุฏูุง - ุงูุดูุก ุงูุฑุฆูุณู ูู ุฃูู ูููู ุจุชูููุฐ ุงููุงุฌูุฉ ุงูู ุทููุจุฉ.
ุชูุณูุน ุงูู
ุซุงู
ุงูุญูู DI Decorator
ุชุชูุญ ูู ุฃุฏูุงุช ุชุฒููู DI ุฌุนู ุงุณุชุนูุงู ุงุช DI ุฃูุซุฑ ู ุฑููุฉ.
ุฅุฐุง ููุช ูุง ุชุนุฑู ุฌู ูุน ุงูู ุตู ู ูู ุงูุฃุฑุจุนุฉ ุ ุฃูุตู ุจูุฑุงุกุฉ ูุฐุง ุงูู ูุงู ุนูู ู ููุน Medium . ุงูู ูุงูุฉ ุจุงููุบุฉ ุงูุฅูุฌููุฒูุฉ ุ ูููู ููุงู ุชุตูุฑุงุช ุฑุงุฆุนุฉ ูู ูููู ุฉ ุญูู ุงูู ูุถูุน.
ูุง ูุนุฑู ุงููุซูุฑ ู ู ุงููุงุณ ุฃูุถูุง ุฃูู ูู ูู ุงุณุชุฎุฏุงู ุฃุฏูุงุช ุชุฒููู DI ูู ู ุฌู ูุนุฉ deps ุ ูุงูุชู ุชุนุฏ ุงูุญุฌุฌ ูู ุตูุน ุงูู ุฒูุฏูู.
providers: [
{
provide: SOME_TOKEN,
/**
* ,
* [new Decorator(), new Decorator(),..., TOKEN]
* .
*
* โnullโ,
* OPTIONAL_TOKEN
*/
deps: [[new Optional(), OPTIONAL_TOKEN]],
useFactory: someTokenFactory
}
]
ู ุตูุน ุชููู
ูุฃุฎุฐ ู ููุดุฆ InjectionToken ูุณูุทูู.
ุงููุณูุทุฉ ุงูุซุงููุฉ ูู ูุงุฆู ุจุชูููู ุฑู ุฒ ู ู ูุฒ.
ู ุตูุน ุงูุชูููุงุช ูู ูุธููุฉ ุชุณู ู ุงููุญุธุฉ ุงูุชู ูุทูุจ ูููุง ุดุฎุต ู ุง ูุฐุง ุงูุฑู ุฒ ูุฃูู ู ุฑุฉ. ูู ุฐูู ุ ูู ููู ุญุณุงุจ ููู ุฉ ููุงุณูุฉ ู ุนููุฉ ููุฑู ุฒ ุงูู ู ูุฒ ุฃู ุญุชู ุงููุตูู ุฅูู ููุงูุงุช DI ุงูุฃุฎุฑู ู ู ุฎูุงู ูุธููุฉ ุงูุญูู.
ุฃูู ูุธุฑุฉ ุนูู ู ุซุงู ูุชูููุฐ ูุธููุฉ ุฏูู ุงูููุฑ ุนูู ุงูุฒุฑ ุ ูููู ูุฐู ุงูู ุฑุฉ ูู ู ุตูุน ุงูุฑู ุฒ ุงูู ู ูุฒ
ุชูุณูุน ุงูู
ุซุงู
ุฎุงุชู ุฉ
ูุนุฏ DI in Angular ู ูุถูุนูุง ุฑุงุฆุนูุง: ูููููุฉ ุงูุฃููู ุ ูุง ูุญุชูู ุนูู ุงูุนุฏูุฏ ู ู ุงูุฃุฏูุงุช ูุงูุฃุฏูุงุช ุงูู ุฎุชููุฉ ููุชุนูู ุ ูููู ูู ููู ุงููุชุงุจุฉ ูุงูุชุญุฏุซ ูุณุงุนุงุช ุญูู ุงูุงุญุชู ุงูุงุช ูุงูุงุณุชุฎุฏุงู ุงุช ุงูุชู ุชูุฏู ูุง ููุง.
ุขู ู ุฃู ุชููู ูุฐู ุงูู ูุงูุฉ ูุฏ ุฃุนุทุชู ุงูุฃุณุงุณ ุงูุฐู ูู ููู ู ู ุฎูุงูู ุงูุชูุตู ุฅูู ุญููู ุฎุงุตุฉ ุจู ูุชุจุณูุท ุงูุนู ู ู ุน ุงูุจูุงูุงุช ูู ุชุทุจููุงุชู ูู ูุชุจุงุชู.