[ x ] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question
çŸåšã®åäœ
ã¯ãŒã¯ã¹ããŒã¹å
ã®æªäœ¿çšã®ã³ã³ããŒãã³ã/ãã€ã/ãã£ã¬ã¯ãã£ããã³ã³ãã€ã©ã«ãã£ãŠæ€åºããããã¡ã€ã«ããšã«ãšã©ãŒCannot determine the module for class (...)
ãã¹ããŒãããŸãã ã³ã³ãã€ã«ãåæ¢ããæ§æã§ããªãããã§ãã ãããã®ãã¡ã€ã«ãã¯ãŒã¯ã¹ããŒã¹ã«å«ããå¿
èŠãããããçµæã®ã¢ããªã§ã¯å¿
èŠãªããããããã¯åé¡ã§ãïŒå
±æã³ã³ããŒãã³ãã®ããŸããŸãªçµã¿åãããå¿
èŠãšããããŒãããŒå®è£
ïŒã ããã¯ãã¯ãŒã¯ã¹ããŒã¹ã«é¢ä¿ãªããå«ãŸããŠãããã¡ã€ã«ã®ãªã¹ããæäŸã§ããã¯ãã®WebpackããŒããŒã§ã®ã³ã³ãã€ã«ã«é¢ããŠç¹ã«ã€ã©ã€ã©ããŸãã
äºæ³ãããè¡å
ãããã®ãšã©ãŒã¯èŠåã§ããããã³ã³ãã€ã©ãªãã·ã§ã³ã«ãã£ãŠæ¶é³ãããå¯èœæ§ããããšæããŸãã ãŸãã¯ãwebpackã«é¢ããŠã¯ããã¡ã€ã«ã®ãªã¹ãã®æ¿å
¥ãèš±å¯ããŠãwebpackãã¯ãŒã¯ã¹ããŒã¹å
ã®ãã¹ãŠã®ãã¡ã€ã«ã§ã¯ãªããrequireãã§ãŒã³å
ã®ãã¹ãŠã®ãã¡ã€ã«ãæäŸã§ããããã«ããããšãã§ããŸãã
æ瀺ã«ããåé¡ã®æå°éã®åçŸ
JITã䜿çšããŠãããããplunkrã§ãã¢ã§ããŸããã
Cannot determine the module for class
è¡åãå€ããåæ©/ãŠãŒã¹ã±ãŒã¹ã¯äœã§ããïŒ
ç§ã®äŒç€Ÿã«ã¯ç¬èªã®ããŒã¹ã¢ããªããããããŒãããŒã¯ãã®ã¢ããªã®ä¿®æ£ããŒãžã§ã³ãç¬èªã®ã¢ããªãšããŠäœ¿çšããŠããŸãã ãã¹ãŠã®ããŒãããŒãåå¥ã«ç¶æããã®ã§ã¯ãªããå¿
èŠã«å¿ããŠã€ã³ããŒããããå
±éã®æ±çšã³ã³ããŒãã³ãã®å
±æã©ã€ãã©ãªã䜿çšããŸãã åºæ¬ã¢ããªã§ã¯ããã¹ãŠã®ã³ã³ããŒãã³ãã䜿çšããŠããããããã¹ãŠåé¡ãããŸããã ããŒãããŒã®å Žåãå
±ænpmããã±ãŒãžã®äžéšã®ã³ã³ããŒãã³ãã«å®£èšãããã¢ãžã¥ãŒã«ããªããããAOTã䜿çšã§ããŸããã
ããªãã®ç°å¢ã«ã€ããŠæããŠãã ããïŒ
ãã¹ãŠã®ããã€ã¹ã§çºçããŸãããçŸåšã®ãã¹ãèšå®ã¯æ¬¡ã®ãšããã§ãã
ãŠã£ã³ããŠãº10
VSã³ãŒã
CmderïŒbashã¿ãŒããã«ïŒ
AngularããŒãžã§ã³ïŒ
v2.1.0ïŒ2.3.1ã§ããã¹ãæžã¿ã§ããïŒ
ãã©ãŠã¶ïŒãã¹ãŠ-ããã¯ã³ã³ãã€ã©ã®åé¡ã§ããããã©ãŠã¶åºæã§ã¯ãããŸãã
èšèªïŒ Typescript
ã¯ã©ã¹ã®ã¢ãžã¥ãŒã«ãå€å¥ã§ããŸãã
ã³ã³ããŒãã³ãã¯ã¢ãžã¥ãŒã«ã®äžéšã§ããå¿
èŠããããŸãã ããã¯æå³ãããŠããŸãã
æ©èœãªã¯ãšã¹ãã ãšæããŸãã
@DzmitryShylovich䜿çšããŠããã³ã³ããŒãã³ããã¢ãžã¥ãŒã«ã®äžéšã§ããå¿ èŠãããããšã¯çã«ããªã£ãŠããŸãã ããããã³ã³ãã€ã©ã«é¢ããéãããããã®ãã¡ã€ã«ã¯éèŠã§ã¯ãããŸããã ãããã¯æªäœ¿çšã®åç §ãããŠããªã.tsãã¡ã€ã«ã§ãããããŸããŸã³ã³ããŒãã³ããå«ãŸããŠããŸãã
@ smilemadude66uã¯tsconfigã§æªäœ¿çšã®ãã¡ã€ã«ãé€å€ã§ããŸã
@DzmitryShylovichã§ããŸããããã¬ã«ãã¡ã€ã«ã¯ãããè€éã«ããŸãã ã¯ã©ã¹ããã¬ã«ãã¡ã€ã«ã§åãšã¯ã¹ããŒããããå Žåããã¬ã«ãã¡ã€ã«ãç¡èŠããå¿ èŠããããŸããããã«ããããã®ãã¬ã«ããå¿ èŠãªã¯ã©ã¹ã§åé¡ãçºçããå¯èœæ§ããããŸãã
ã³ã³ãã€ã©ã絶察ã«å¿ èŠä»¥äžã«ã³ã³ãã€ã«ãè©Šã¿ãªããã°ãªããªãã®ã¯å¥åŠã«æããŸãã ããªãŒã®æºãã¯ããŠãããã³ã³ãã€ã©ã¯ãäžãããããã¡ã€ã«ãŸãã¯äžãããããã¡ã€ã«ã«æ瀺çã«ãªã³ã¯ããããã¡ã€ã«ã®ã¿ãåŠçããããšæãã§ãããã
ã³ã³ãã€ã©ã絶察ã«å¿ èŠä»¥äžã«ã³ã³ãã€ã«ãè©Šã¿ãªããã°ãªããªãã®ã¯å¥åŠã«æããŸãã
ãããã³ã³ãã€ã©ã®ä»çµã¿ã§ã...
JITã³ã³ãã€ã«ãæ©èœãããšããäºå®ã¯ãã³ã³ãã€ã©ããããã®ãã¡ã€ã«ãå¿ èŠãšããªãããšã®ããªãè¯ã蚌æ ã«ãªãã¯ãã§ãã 害ãåãŒãããšãªãé€å€ã§ãããã¡ã€ã«ã«å¯ŸããŠãèŠåã®ä»£ããã«ãšã©ãŒãã¹ããŒããŸãã
ã³ã³ãã€ã©ãäžæ¥äžã©ã®ããã«æ©èœãããã«ã€ããŠç§ã«è©±ãããšãã§ããŸãããããã¯ããåºæ¬çãªãŠãŒã¹ã±ãŒã¹ã§ã¯å®éã®åé¡ã§ãã ç§ã¯ãå°ãªããšããšã©ãŒãæå¶ããèªå·±è²¬ä»»ã§ç¶è¡ããããã®äœããã®æ¹æ³ãæ±ããŠããã ãã§ãã
ç§ã®ååã¯ããã©ã³ã±ããé€å€ã®äœ¿çšã劚ããŠããå¯èœæ§ã®ãããã¬ã«ãã¡ã€ã«ãåé€ããããšããŠããŸããã@ ngtools / webpackã«å¯ŸããŠæåã«éããåé¡ã確èªããŠãã ãããå¥ã®ãŠãŒã¶ãŒãããã¹ãã§ã®ã¿åç §ãããã³ã³ããŒãã³ãã https://github.com/angular/angular-cli/issues/3636
ã³ã³ãã€ã©ãŒã¯ãç§ãã³ã³ãã€ã«ãèŠæ±ããŠããªããã¡ã€ã«ãèªèããŠããããªã«ããªãŒå¯èœãªç¶æ³ã«å¯ŸããŠãªã«ããªãŒäžèœãªãšã©ãŒãã¹ããŒããŠããŸãã ãã®ããã«æçœã
ãããžã§ã¯ãã«å«ãŸããŠããªãã³ã³ããŒãã³ããåããã£ã¬ã¯ããªã«ããçç±ãããããŸããã
ããã¯æ©èœèŠæ±ã§ããå¯èœæ§ããããšæããŸãããçŸåšãããã¯ã³ã³ãã€ã©ãŒã®åäœæ¹æ³ã§ãããŸãããJITã§åäœããããšèšã£ãŠããAOTã§åäœããã¯ãã ãšèããã®ã«ååãªçç±ã§ã¯ãããŸããã
ç§ãããªããããå¿
èŠããããšæãã®ã¯ããããã®ãã¡ã€ã«ãããŒã¹ã¢ããªããã¢ãžã¥ãŒã«ã«åé¢ããããçš®ã®ããã±ãŒãžãããŒãžã£ãŒãä»ããŠã€ã³ããŒãããããšã§ããããã«ãããåé¡ã解決ããããã£ã¬ã¯ããªãæŽçãããããããåŽé¢ããã®ä¿å®ã容æã«ãªããŸãã
@Toxicableæªäœ¿çšã®ãã¡ã€ã«ã¯ãã©ã€ãã©ãªã¹ã¿ã€ã«ã®npmã¢ãžã¥ãŒã«ã«ãããŸãã äžè¬çã«ãçæ³çãªãŠãŒã¹ã±ãŒã¹ã¯æ¬¡ã®ãããªãã®ã§ãã
@ project / angleïŒå ±æã³ãŒãnpmã¢ãžã¥ãŒã«ïŒã«ã¯ãããŒã¹ã¢ããªãäœæããããã¯ãšã³ããã©ãããã©ãŒã ãšéä¿¡ããããã«å¿ èŠãªãã¹ãŠã®ã³ã³ããŒãã³ãããã€ãããã£ã¬ã¯ãã£ããããã³ãµãŒãã¹ããããŸãã ç§ãã¡ã®ããŒãããŒã¯ã䌌ãŠãããå¥ã®ããŒã ããŒãžã䜿çšããŠããããŸãã¯ããã€ãã®æ°ããã³ã³ããŒãã³ããè¿œå ãããŠããã¢ããªãæãã§ããŸãã ãã ããä»ã®ã»ãšãã©ã®ããŒãžã¯åãã§ããããã©ãããã©ãŒã ã«æ¥ç¶ããããã«å¿ èŠãªãã¹ãŠã®ãµãŒãã¹ã¯åãã§ããå¯èœæ§ããããŸãã
åå©çšå¯èœãªã³ãŒããæ倧åããããã®ç§ãã¡ã®ã¢ãããŒãã¯ãåããŒãããŒã«ã¢ãžã¥ãŒã«ãäœæãããæ°ããããŒã¹ãšå
±æããŒã¹ã®çµã¿åãããnpmã¢ãžã¥ãŒã«ããã€ã³ããŒãããããšã§ããã ç§ã®æ°ããHomeModule
ã«ã¯ã次ã®ãããªã€ã³ããŒããå«ãŸããŠããå¯èœæ§ããããŸãã
import {
OverviewComponent,
ProfileComponent
} from './components/home';
import {
AuthComponent
} from '@project/angular';
次ã«ãããã¯AOTã§æ¬¡ã®ããã«è¡šç€ºãããŸãã@ project / angleã®OverviewComponentã䜿çšããŠããªãããã Cannot determine the module for class OverviewComponent
ã
æåéã@project/angular/components/home/overview/component.ts
ãæããã¡ã€ã«ã¯ãªãã®ã§ãã³ã³ãã€ã©ãæªäœ¿çšã§ããããšããŸã£ããæ°ã«ããªããšæããŸãã ãããããã¡ã€ã«ã¯ãããžã§ã¯ãã®node_modules dirå
ã«ååšãããããã³ã³ãã€ã©ãŒã¯ãããèŠã€ããŠæå¥ãèšããæ»ã«ãŸãã
JITã¯æ©èœããŸãïŒ== AOTã¯æ©èœããããŒã¹ã¢ããªã¯AOTã§æ©èœããæŠå¿µå®èšŒããŒãããŒã®å€æŽã¯éåžžã«å°ããã§ãã JITã§æ©èœãããã¹ãŠã®ãã®ãAOTã§æ©èœããå¿ èŠãããããšãæå³ããããã§ã¯ãããŸãããããããå¿ èŠã§ãããšä¿¡ããååãªçç±ããããŸãã
ãã®çŸåšã®åäœãæå³ããªããªãå¥ã®äŸããããŸã-ãã¹ãã
ããšãã°ãæ©èœãã£ã¬ã¯ããªsome-feature
ãããã some-feature.component.ts
ãšsome-feature.component.spec.ts
ããããŸãã
ãã®ã³ã³ããŒãã³ãã¯ã³ã³ãã³ããããžã§ã¯ã·ã§ã³ã䜿çšããããããã¥ãŒã§some-feature
ã³ã³ããŒãã³ãã䜿çšãã$ some-feature.component.spec.ts
ãã¡ã€ã«å
ã«ãã¹ãã³ã³ããŒãã³ããäœæããŠããã®æ©èœããã¹ãããããšæããŸãã
@Component({
selector: 'test-app',
template: `<some-feature><p>projected content</p></some-feature>`
})
export class TestAppComponent {}
次ã«ããã®ã³ã³ããŒãã³ãããã¹ãã¢ãžã¥ãŒã«ã§äœ¿çšããŸãã
...
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [TestAppComponent, SomeFeatureComponent]
})
})
...
ç§ãangular-cliã䜿çšããŠng build --prod --aot
ãå®è¡ãããŸã§ããã¹ãŠãæå¹ã§çŽ æŽãããã§ãã
Cannot determine the module for class TestAppComponent
ã
AOTã¯.spec
ãã¡ã€ã«ã«é¢ä¿ããã¹ãã§ã¯ãªããšæããŸãã
äžè¬çãªã«ãŒã«ã¯æ¬¡ã®ãšããã§ããngcã¯tscãã³ã³ãã€ã«ãããã¹ãŠã®ãã®ãã³ã³ãã€ã«ããŸãã ãããŠãèŠã€ãã£ããã¹ãŠã®ã³ã³ããŒãã³ããã³ã³ãã€ã«ããããšããŸãã ãã ããAngularã¯é¢é£ããã¢ãžã¥ãŒã«ãªãã§ã³ã³ããŒãã³ããã³ã³ãã€ã«ããããšã¯ã§ããŸããã
ãã ãããã®ãšã©ãŒãèŠåã«å€æŽããããšã¯ã§ããŸãã
ãŸãããã¹ãã®ã¿ã«äœ¿çšãããããã§èª¬æããããã«AOTãççºãããã¹ãã©ãããŒã³ã³ããŒãã³ãããããŸãã TestComponent *ãªã©ã®ã¯ã€ã«ãã«ãŒãåŒãæºãããã¹ãŠã®ã³ã³ããŒãã³ããAOTãç¡èŠã§ãããšäŸ¿å©ã§ãã
äºè§£ããŸããã詳现ã¯ãã¡ããã芧ãã ããã ç§ãã¡ã®ã±ãŒã¹ã®åé¿çãèŠã€ããããã§ãïŒtestWrapperã±ãŒã¹ã¯ä¿®æ£ãããŸããïŒã ç§ãã¡ã®å Žåã®æ¬åœã®åé¡ã¯ãã¬ã«ãã¡ã€ã«ã ã£ãããã§ãã ãã¬ã«ãã¡ã€ã«ããäœããã€ã³ããŒãããå Žåããã¬ã«ã«ãã£ãŠåéä¿¡ããããã¹ãŠã®ãã®ã®ãã§ãŒã³ã«åŸããŸãã ãããã¬ãã«ã®PROJECT/components
ããã³ã³ããŒãã³ããååŸããŠãããããå¿
èŠãªã³ã³ããŒãã³ãã ãã§ãªãããã¹ãŠã®ã³ã³ããŒãã³ããåæããŠããŸããã ããã¯ããããèŠåãšããŠã¯è¯ãã§ãããããã³ã³ãã€ã©ããããã®ã³ã³ããŒãã³ããæ°ã«ãããŠããçç±ã¯ããå°ãããç解ã§ããŸãã
åããšã©ãŒã衚瀺ãããŸãïŒ
$ ./node_modules/.bin/ng-xi18n
Error: Cannot determine the module for class DividerPanel in C:/msweb/studiotouch/src/comps/dividerpanel/DividerPanel.ts!
Cannot determine the module for class EntryPanel in C:/msweb/studiotouch/src/comps/entry/EntryPanel.ts!
Cannot determine the module for class ForgotPass in C:/msweb/studiotouch/src/comps/entry/ForgotPass.ts!
Cannot determine the module for class Footer in C:/msweb/studiotouch/src/comps/footer/Footer.ts!
Cannot determine the module for class Infobox in C:/msweb/studiotouch/src/comps/infobox/Infobox.ts!
Cannot determine the module for class InputNumeric in C:/msweb/studiotouch/src/comps/inputnumeric/InputNumeric.ts!
Cannot determine the module for class InputString in C:/msweb/studiotouch/src/comps/inputstring/InputString.ts!
Cannot determine the module for class Loading in C:/msweb/studiotouch/src/comps/loading/Loading.ts!
Cannot determine the module for class MapAddress in C:/msweb/studiotouch/src/comps/mapaddress/MapAddress.ts!
Cannot determine the module for class Minitab in C:/msweb/studiotouch/src/comps/minitabs/MiniTab.ts!
Cannot determine the module for class Minitabs in C:/msweb/studiotouch/src/comps/minitabs/MiniTabs.ts!
Cannot determine the module for class ModalDialog in C:/msweb/studiotouch/src/comps/modaldialog/ModalDialog.ts!
Cannot determine the module for class Ng2Highcharts in C:/msweb/studiotouch/src/comps/ng2-highcharts/src/directives/ng2-highcharts.ts!
Cannot determine the module for class Ng2Highstocks in C:/msweb/studiotouch/src/comps/ng2-highcharts/src/directives/ng2-highstocks.ts!
Cannot determine the module for class Ng2Highmaps in C:/msweb/studiotouch/src/comps/ng2-highcharts/src/directives/ng2-highmaps.ts!
Cannot determine the module for class simplelistEditable in C:/msweb/studiotouch/src/comps/simplelist/simplelistEditable.ts!
Cannot determine the module for class simplelist in C:/msweb/studiotouch/src/comps/simplelist/simplelist.ts!
Cannot determine the module for class FilterPipe in C:/msweb/studiotouch/src/pipes/FilterPipe.ts!
Cannot determine the module for class FilterPipeEqual in C:/msweb/studiotouch/src/pipes/FilterPipeNot.ts!
Cannot determine the module for class OrderBy in C:/msweb/studiotouch/src/pipes/OrderBy.ts!
Cannot determine the module for class ReplacePipe in C:/msweb/studiotouch/src/pipes/ReplacePipe.ts!
Cannot determine the module for class SortBy in C:/msweb/studiotouch/src/pipes/SortBy.ts!
at analyzeAndValidateNgModules (C:\msweb\studiotouch\node_modules\@angular\compiler\bundles\compiler.umd.js:24878:17)
at Extractor.extract (C:\msweb\studiotouch\node_modules\@angular\compiler\bundles\compiler.umd.js:27727:20)
at Extractor.extractBundle (C:\msweb\studiotouch\node_modules\@angular\compiler-cli\src\extractor.js:40:33)
at Extractor.extract (C:\msweb\studiotouch\node_modules\@angular\compiler-cli\src\extractor.js:30:34)
at extract (C:\msweb\studiotouch\node_modules\@angular\compiler-cli\src\extract_i18n.js:7:67)
at Object.main (C:\msweb\studiotouch\node_modules\@angular\tsc-wrapped\src\main.js:47:16)
at Object.<anonymous> (C:\msweb\studiotouch\node_modules\@angular\compiler-cli\src\extract_i18n.js:14:9)
at Module._compile (module.js:556:32)
at Object.Module._extensions..js (module.js:565:10)
at Module.load (module.js:473:32)
Extraction failed
root@DESKTOP-VEUHFOL /cygdrive/c/msweb/studiotouch
Angular 2ãããã³ã·ã³ã¯ïŒhttpïŒ //ng2.javascriptninja.io
ããã³source @ https://github.com/born2net/Angular-kitchen-sink
ããããã
ã·ã§ãŒã³
i18ã¯ããããžã§ã¯ãæ§é å šäœã説æããã®ã§ã¯ãªãã䜿çšãããŠãã宣èšã確èªããå¿ èŠããããŸãã
䜿çšãããŠããªããã£ã¬ã¯ãã£ããã¯ãªãŒã³ã¢ããããããšããŸãããããããã®ç©Žãæ·±ããªããŸããã
$ ./node_modules/.bin/ng-xi18n
Error: Error at C:/msweb/ng-skeleton/node_modules/typescript/lib/lib.d.ts:18770:11: Duplicate identifier 'ActiveXObject'.
Error at C:/msweb/ng-skeleton/node_modules/typescript/lib/lib.d.ts:18773:13: Duplicate identifier 'ActiveXObject'.
Error at C:/msweb/ng-skeleton/e2e/app.po.ts:1:38: Cannot find module 'protractor'.
Error at C:/msweb/ng-skeleton/node_modules/@angular/core/src/facade/lang.d.ts:12:17: Cannot find name 'Map'.
Error at C:/msweb/ng-skeleton/node_modules/@angular/core/src/facade/lang.d.ts:13:17: Cannot find name 'Set'.
Error at C:/msweb/ng-skeleton/node_modules/@angular/core/src/application_init.d.ts:16:18: Cannot find name 'Promise'.
Error at C:/msweb/ng-skeleton/node_modules/rxjs/Observable.d.ts:68:60: Cannot find name 'Promise'.
Error at C:/msweb/ng-skeleton/node_modules/rxjs/Observable.d.ts:68:70: Cannot find name 'Promise'.
Error at C:/msweb/ng-skeleton/node_modules/@angular/core/src/linker/compiler.d.ts:53:49: Cannot find name 'Promise'.
Error at C:/msweb/ng-skeleton/node_modules/@angular/core/src/linker/compiler.d.ts:61:65: Cannot find name 'Promise'.
Error at C:/msweb/ng-skeleton/node_modules/@angular/core/src/application_ref.d.ts:116:67: Cannot find name 'Promise'.
Error at C:/msweb/ng-skeleton/node_modules/@angular/core/src/application_ref.d.ts:132:101: Cannot find name 'Promise'.
Error at C:/msweb/ng-skeleton/node_modules/@angular/core/src/application_ref.d.ts:158:67: Cannot find name 'Promise'.
Error at C:/msweb/ng-skeleton/node_modules/@angular/core/src/application_ref.d.ts:160:101: Cannot find name 'Promise'.
ãã¹ãŠãangular-cliãšangular-compilerã§æ£åžžã«æ©èœããŠããããšãä»ãå ããŠãããŸãããã®ãããç§ã®ãããžã§ã¯ããæ°ã«å ¥ããªãã®ã¯i18ã ãã§ãã
ãªãã¡ã¬ã³ã¹ïŒããŠãã§ã¯ãªãŒã³ãªã»ããã¢ããïŒïŒ https ïŒ//github.com/born2net/ng-skeleton
ããããã
ã·ã§ãŒã³
ã³ã¡ã³ãã¢ãŠããããã³ã³ããŒãã³ãã®åããšã©ãŒ..éçºæ®µéã§æªäœ¿çšããã³ã³ã¡ã³ãã¢ãŠããããã³ã³ããŒãã³ãã¯ãåŠçããªãããã®æçšãªã¹ãããã§ãã
// two comments aot read:
// {path: 'about', component: AboutComponent
// import { AboutComponent } from './about';
@kirjai ngcã¯ããœãŒã¹ãã£ã¬ã¯ããªå ã®ãã¹ãŠã®ãã¡ã€ã«ãã³ã³ãã€ã«ããŸãã ã€ã³ããŒããããã©ããã¯é¢ä¿ãããŸããã
ç§ãç解ããŠãã@DzmitryShylovichã¯ããã®å ŽåãAOTããã®ãã¡ã€ã«ããŸã£ããæ°ã«ããå¿ èŠã¯ãªããšèšã£ãŠããã ãã§ããç§ã®èãã§ã¯ãAOTã³ã³ãã€ã«äžã«.specãã¡ã€ã«ãã¹ãããããã®ãéã§ãã ããããæããã«ãããŒã ããããè¡ãã®ã劚ããŠããäœãããããŸããç§ã¯ç解ããŠããŸãã
å¥ã®æ¹æ³ãšããŠããã¹ããèšè¿°ãããŠãããšã³ãã£ãã£ãšåããã£ã¬ã¯ããªã«.specãã¡ã€ã«ãé 眮ããããšã¯ãã¹ã¿ã€ã«ã¬ã€ãã«ãã£ãŠææ¡ãããã¹ãã§ã¯ãããŸãããïŒ
ãã¹ãã³ãŒããšAOTã®çµã¿åãããåå ã§ããã®ãšã©ãŒã¡ãã»ãŒãžïŒããã³ãã®ä»ã®ã¡ãã»ãŒãžïŒãçºçããŸãã
ãã®èšäºããå§ãããŸãã ç¹å®ã®ãšã©ãŒã¡ãã»ãŒãžãåŒãèµ·ããæ¹æ³ãšãããããä¿®æ£/åé¿ããæ¹æ³ã«ã€ããŠèª¬æããŸãã
å ¬åŒã®ãã¹ãã¬ã€ãã«åŸããAOTã䜿çšããŠã¢ããªãäœæãããšããã®æ£ç¢ºãªåé¡ã«ééããããšãèãããšãã¬ã€ããæŽæ°ããããšããå§ãããŸããïŒ
ïŒèª°ããRouterLinkStubDirective
ã«é¢ããçããæ¢ããŠããå ŽåïŒ
_ããããŒãã¢ãžã¥ãŒã«ãè¿œå ããããšã§ä¿®æ£ã§ããŸãïŒ_
/**
* Needed so that `aot` build is working. But it isn't used throughout our tests and/or app.
*/
@NgModule({
imports: [
AppModule
],
declarations: [
RouterLinkStubDirective,
RouterOutletStubComponent
]
})
export class FakeRouterModule {
}
ã¡ãªã¿ã«ãæœè±¡ã¯ã©ã¹ã®ã¢ãžã¥ãŒã«ã決å®ããããšããŸãã
export abstract class AsyncTransform extends AsyncPipe implements PipeTransform {
...
}
ããšã©ãŒïŒã¯ã©ã¹AsyncTransformã®ã¢ãžã¥ãŒã«ãå€å¥ã§ããŸããã
ã¢ãžã¥ãŒã«ã«è¿œå ããŠãæ©èœããŸããðã
ãæœè±¡ã³ã³ã¹ãã©ã¯ã¿ãŒåãéæœè±¡ã³ã³ã¹ãã©ã¯ã¿ãŒåã«å²ãåœãŠãããšã¯ã§ããŸãããã
ããã¯äžéšã®ã¯ã©ã¹ã§ãçºçããŠããŸãã
ãšã©ãŒïŒã¯ã©ã¹AppGlobalModalComponentã®ã¢ãžã¥ãŒã«ãå€å¥ã§ããŸãã
export class CustomGlobalModalComponent extends AppGlobalModalComponent {}
@Phmagerãææããããã«ã @ gestjã¯ããããŒã¢ãžã¥ãŒã«ããã¹ãŠã®å Žåã®ä¿®æ£ã§ã¯ãããŸããã ããã«ãäžèŠãªã³ãŒããäžèŠãªã³ãŒããã³ã³ãã€ã«ããŠããŸãããããããã¯ããªãåä»ãªä¿®æ£ã§ãã
ç§ãã¡ã®å Žåãå¥ã®æ¹æ³ã§åé¡ã«ããããé©çšããŸããã å ±æã³ã³ããŒãã³ããnpmlibã«ç§»åããtsConfigã®node_modulesãç¡èŠããŸããã ããã§ãæ©èœããªãããšã¯åè¿°ããŸãããããã¬ã«ãã¡ã€ã«ã䜿çšããŠããããã§ãã node_moduleså ã§å¿ èŠãªåã¯ã©ã¹ãçŽæ¥æå®ãããšãä»ã®ã¯ã©ã¹ã¯ç¡èŠãããŸãã ãã ãããã¬ã«ããã€ã³ããããšããã«ãåããã¬ã«å ã®æªäœ¿çšã®ãã¡ã€ã«ã«å¯ŸããŠãšã©ãŒãã¹ããŒãããŸãã
ããã¯ããã¹ãŠã®ãã°ããããã¬ã«ãã¡ã€ã«ãåé€ãããããçæ³çã§ã¯ãããŸããããå°ãªããšãäºæž¬å¯èœã§ãã
ãã®ãšã©ãŒãèŠåã«éæ ŒãããããšããŸã æãã§ããŸã
ãããŸã§AngularããŒã ã§è¡ãããçŽ æŽãããä»äºã
ç§ãã¡ã¯ãããžã§ã¯ãã§Angularãå€çšããŠããããããã®éšã
ããAngular2 +ã®ãã¹ãŠã«é ãæ©ãŸããããšãã1幎åŸãããã«ç§ã®çºèŠããããŸãïŒ
1- Angularã¯å€§ãããŠé
ãã§ãããéããããã§ããïŒ AOTãšLazyLoadingã䜿çšããŠãã³ã³ãã³ããgzipã§å§çž®ããŸãã
2-ã³ã³ããŒãã³ããlazyLoadãããã§ããïŒ ããããã«ãŒãã1åé
延ããŒãã§ããã®ã§ãã¢ããªã倧èŠæš¡ã§1ããŒãžãããªãå Žåã¯ã8mgã®ãã³ãã«ãµã€ãºãã楜ãã¿ãã ããã
3-ããªãã¯AOTã䜿ãããã§ãã?? AOTã¯ãã°ãå€ããæºæ ããã®ãé£ãããjavascript / es6æ©èœã®ããŒãã䜿çšãããããããå€ãã®ã³ãŒããæžãçŽããŸãã
4- AOTã䜿çšããŠããŸããïŒ äºè§£ããŸãããæçµãã³ãã«ãèŠãŠã¿ãŸãããã@ angular / compilerã«å ããŠãAOTãããŠããªãã³ã³ããŒãã³ããããããã«å€§ãããªããããã§ããŠããŸãã
5-Angular2 +ã®ã¡ãªããã®äžéšãšããŠãgzipã䜿çšã§ããããã«ãªããŸããããããŸã§äœ¿çšæ¹æ³ãããããªãã£ãå Žåã«åããŠãAngularã倧èŠæš¡ã«ãªã£ããããããé©åã«åŠç¿ã§ããŸã:) 'Angular2ã³ãŒããæé©åããããã®ãªãã·ã§ã³ãšããŠgzipã販売ããŠããŸã:)
@ xe4meãã®ã¹ã¬ããã§ã¯ããã¬ãŒã ã¯ãŒã¯ã«å¯Ÿããäžè¬çãªæãã§ã¯ãªããç®åã®åé¡ã«é¢é£ããè°è«ãç¶ããŠãã ããã
https://github.com/AngularClass/angular2-webpack-starterã®buildïŒdevã¯ãé¢æ°å®çŸ©ã«äžèŽããããã«æååãæååé åã«èªåå€æããŸããbuildïŒaotã¯ãšã©ãŒã衚瀺ããŸãã éçºäžã¯ãé »ç¹ãªAOTãã«ããå¿ èŠã§ããããã§ãã
ç§ã¯åãåé¡ãæ±ããŠããŸãããããŠç§ã¯è§£æ±ºçãèŠã€ããŸãããå€åããã¯ããªãã«ãã£ãŠãåãã§ãããã
ç§ã®ã·ããªãªã¯æ¬¡ã®ãšããã§ãã
2ã€ã®ãã€ããå«ãMapPipes.tsããããŸãã
ãã€ãã®1ã€ã¯ç§ã®ã¢ãžã¥ãŒã«ã§äœ¿çšãããŸãããããã1ã€ã¯äœ¿çšãããŸããã§ããã ãããã£ãŠã @ NgModuleãã³ã¬ãŒã¿ã®ãdeclarationïŒãéšåã«2çªç®ãç»é²ããŸããã§ããã ãã®ç§ã«åé¡ãçºçããŸããã
ãããç»é²ããŸãããïŒäœ¿ãããŠããŸããã§ãããïŒãåäœããŸãã
ç§ã®ææ¡ã¯ãå®éã«äœ¿çšãããŠããè§åºŠãšã³ãã£ãã£ã«å¯ŸããŠã®ã¿ã¢ãžã¥ãŒã«ãèŠã€ããããšããæ¹æ³ã§è§åºŠã³ã³ãã€ã©ãå€æŽããããšã§ãã
extends NgClass
ãšããæœè±¡ã¯ã©ã¹ã§ãã®ãšã©ãŒãçºçããŠããŸãã ç¶æ¿ãåé€ãããšãã®åé¡ã¯ä¿®æ£ãããããã§ãããæããã«ä»ã®åé¡ãçºçããŸãã
@DzmitryShylovich @kirjaiããã¯ãã¹ããã¯ãã¡ã€ã«ããšã¯ã¹ããŒãããå Žåã®TestComponents
ã®åé¡ã«ãããŸããã ãŸããéåžžã¯åããã¡ã€ã«å
ã§ã®ã¿äœ¿çšããå¿
èŠãããããããšã¯ã¹ããŒãããå¿
èŠã¯ãããŸããã åé¡ã¯è§£æ±ºããŸããã
æ£çŽãªãšãããããã¯ã°ãããŠããŸããç§ã¯äœæéãåããŠããã«ãããããããAOTã§åäœããJITã®äžã§åäœãããã®ããŸã ååŸã§ããªããšããäºå®ä»¥å€ã«ããã«ã€ããŠèšãããšã¯äœããããŸããïŒããã¯1ã€ã ãã§ããããšãæ確ã«ããå¿ èŠããããŸããããŸã§ã®ãšããçŽåããŒã¹ã®åé¡ïŒã
@cwmroweã¯åé¡ãããŸããããè€æ°ã®ã¹ããã¯ãã¡ã€ã«ã§åå©çšãããŠãããã®ãããå Žåã¯ã©ãã§ããããã ããã¯æ£çŽèšã£ãŠå£ããŠããããã§ãã
ç§ã®å Žåãåãã³ã¢Angular2ã¢ããªã§2ã€ã®ç°ãªããããžã§ã¯ãã«åãçµãã§ããŸããã ã¯ã©ã€ã¢ã³ãã«ã¡ãªãã§åä»ãããã2ã€ã®ãã©ã«ããŒãããšãã°some-domain.comãšsome-other-domain.comããããŸãã ãã®ã¢ããªã¯2ã€ã®ãããžã§ã¯ãã§ãŸã£ããåãã§ãããããããªã¹ã¿ã€ã«ãšããã€ãã®ãã€ããŒãªã«ã¹ã¿ã ã³ã³ããŒãã³ãã®ã¿ãç°ãªããŸãã ä»æ¥ã¯ã¯ã©ã€ã¢ã³ãAçšã«ã¢ããªãã³ã³ãã€ã«ããå¿ èŠããããåŸã§ã¯ã©ã€ã¢ã³ãBçšã«ã³ã³ãã€ã«ããããšæããŸããã³ãŒãã§ã¯ã1è¡ã®ã³ãŒããå€æŽããã®ãšåããããç°¡åã§ãã
import {CustomModules} from './some-domain.com';
// import {CustomModules} from './some-other-domain.com';
ã³ã³ãã€ã«ããããã¡ã€ã³ã®ã³ã¡ã³ããå€ãã ãã§ãæ©èœããŸãã
ç¶æ¿ã¯ã©ã¹ãšæœè±¡ã¯ã©ã¹ã§ãåãåé¡ãããã解決çã¯èŠã€ãããŸããã§ããã æœè±¡ã³ã³ããŒãã³ããæ¡åŒµããã³ã³ããŒãã³ããããã€ããããŸãã JITã§ã¯ãã¹ãŠãããŸãæ©èœããŸãããAOTã§ã¯æœè±¡ã³ã³ããŒãã³ãã®ã¢ãžã¥ãŒã«ãèŠã€ããããã¢ãžã¥ãŒã«ã§æœè±¡ã³ã³ããŒãã³ãã宣èšããããšã¯ã§ããŸããã
çŸåšãoopãã¶ã€ã³ãã¿ãŒã³ãåé¿ããåé·ãªã³ãŒãã䜿çšãã以å€ã«è§£æ±ºçã¯ãããŸããã
@jabaaã¯æœè±¡ã¯ã©ã¹ãã@Component
ã¢ãããŒã·ã§ã³ãåé€ããŸã
@DzmitryShylovich @Component
ãåé€ãããšãã³ã³ã¹ãã©ã¯ã¿ãŒãç¶æ¿ãããŸããã æœè±¡ã³ã³ããŒãã³ãã§ã¯ãªãããã¹ãŠã®ã³ã³ããŒãã³ãã«ãã¹ãŠã®æ³šå°å€ã泚å
¥ããå¿
èŠããããŸãã ããã¯åé·ãªã³ãŒãã§ãã æœè±¡ã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãŒãšãµãŒãã¹ãå€æŽãããšãã¯ããã¹ãŠã®åã³ã³ããŒãã³ããçç¥ããå¿
èŠããããŸãã
çŸåšããããŒã¡ãœããã䜿çšããŠãã¹ãŠã®æœè±¡ã¡ãœãããå®è£ ãããã¹ãŠã®æœè±¡ã³ã³ããŒãã³ãã«å¯ŸããŠãããŒã¢ãžã¥ãŒã«ãäœæããããšã§ããããåé¿ããŠããŸãã ãããã誰ãããããŒã¡ãœããããªãŒããŒã©ã€ãããã®ãå¿ããå¯èœæ§ããããŸãã ããã¯ãã¹ãŠåé¿çã§ãã
@jabaaã©ã®ããŒãžã§ã³ã䜿çšããŠããŸããïŒ ã³ã³ã¹ãã©ã¯ã¿ãŒã¯ã @Component
ã«é¢ä¿ãªãç¶æ¿ããå¿
èŠããããŸãã
@bigjetplaneåé¡ãã©ãã«ãããããããŸãããã @Component
ãåé€ãããšãã³ã³ããŒãã³ãã®äŸåé¢ä¿ãèŠã€ãããªãã£ããšãããšã©ãŒã衚瀺ãããŸãã ç§ã®ç¥ãéããDIã¯Angularãã³ã¬ãŒã¿ã䜿çšããã¯ã©ã¹ã§ã®ã¿æ©èœããŸãã ãããã£ãŠããã³ã¬ãŒã¿ãåé€ããŠããäŸåé¢ä¿ã¯æ³šå
¥ãããŸããã Angular4ã䜿çšããŸãã
@jabaaã¯jitãŸãã¯aotããããã¯ãã®äž¡æ¹ã§å£ããŠããŸããïŒ
@bigjetplaneããã«åé¡ã®ãããã©ã³ã«ãŒããããŸãã ãã³ã¬ãŒã¿ãåããæœè±¡ã¯ã©ã¹ãããããã¹ãŠãjitã§æ©èœããŸãã æœè±¡ã¯ã©ã¹ãããã³ã¬ãŒã¿ãåé€ãããšããã¹ãŠã®äŸåé¢ä¿ãããŒãã§ããªãã£ããããã¢ããªã¯ã¬ã³ããªã³ã°ã§ããŸããïŒ Can't resolve all parameters for App: (?).
ãããç§ãã¡ã®ãŠãŒã¹ã±ãŒã¹ã§ãã ã³ã³ã¹ãã©ã¯ã¿ãŒãšã€ã³ãžã§ã¯ããæã€æœè±¡ã¯ã©ã¹ããããŸãã åã³ã³ããŒãã³ãã®äžéšã®æœè±¡ã¡ãœããã®ã¿ããªãŒããŒã©ã€ãããå¿ èŠããããŸã
äžããããäŸã¯aotã§ã¯æ©èœããŸããã aotãšjitã®éãã¯ç§ãã¡ã«ãšã£ãŠå€§ããªåé¡ã§ãã ç§ãã¡ã¯jitã§éçºããŠããŸãã æ¬çªãã«ãã¯aotã䜿çšããŸãã ãã®ããããšã©ãŒãèŠåã®ãªãjitã䜿çšããŠé±ãéçºããŠããŸãããã®é±ã®åŸãæ¬çªãã«ããå¿ èŠã«ãªããã©ããããšããªãå€ãã®ãšã©ãŒãçºçããŸãã ç§ã¯ãaotãšã©ãŒãæå¹ã«ã§ããjitçšã®ã¹ã€ããã奜ã¿ãŸãã jitãã«ãã«ã¯10ã20ç§ããããŸãã aotãã«ãã«ã¯25åããããŸãã
@tboschãããèŠåã«å€æŽããããšã«ã€ããŠäœãèšãããããšã¯ãããŸããïŒ ç§ã®ååã®èšªå以æ¥ãããªãã®æ°ã®ä»ã®äººã圌ãèªèº«ã®éžè©±ãå£ã«ããããã§ãããããŠç§ã¯ããªããç§ãã¡ã«ææ°æ å ±ãäžããããšãã§ãããã©ããçåã«æããŸããã
ããããšãïŒ
ç§ãåãåé¡ãæ±ããŠããŸãã
ç§ã®å Žåã2ã€ã®ç°ãªããããžã§ã¯ãã«åãçµãã§ããŸããããpackage.jsonã«äŸåé¢ä¿ãšããŠè¿œå ãããå éšè§åºŠã©ã€ãã©ãªãããžã§ã¯ããä»ããŠå ±éã®ã³ã³ããŒãã³ããå«ããŸããã
ããã¯ã©ã€ãã©ãªãããžã§ã¯ãã§ãããããAOT prodãã«ããã³ã³ãã€ã«ãããšãã«ãã³ã³ããŒãã³ããªããžããªã®æªäœ¿çšã®ã³ã³ããŒãã³ãã以äžã®ãšã©ãŒãã¹ããŒããŸãã
ERROR in Cannot determine the module for class FullPageErrorComponent in C:/users/amra6003/projects/git/refadmintoolui/n
ode_modules/refcommonui/src/app/component-library/error/error.component.ts!
Cannot determine the module for class SelectCountryComponent in C:/users/amra6003/projects/git/refadmintoolui/node_modul
es/refcommonui/src/app/component-library/select-country/select-country.component.ts!
Cannot determine the module for class DateRangeSelectorComponent in C:/users/amra6003/projects/git/refadmintoolui/node_m
odules/refcommonui/src/app/component-library/date-range-selector/date-range-selector.component.ts!
ã³ã³ããŒãã³ãããšã«ã¢ãžã¥ãŒã«ãäœæããŠäœ¿çšããå¿ èŠãããããã§ã:(
ãã®åé¡ã®ä¿®æ£ã¯å€§ãã«åœ¹ç«ã¡ãŸãã
ç§ãããã®ä¿®æ£ãæãã§ããŸãã ã©ãããããã¹ãã«ã¹ã¿ãã³ã³ããŒãã³ãã䜿çšããããšã¯ãAngularéçºè ãæå³ããŠããããã§ãããããã£ãŠãã¯ãªãŒã³ãªæ¹æ³ã§ãã«ãããããããé€å€ããããšãå¯èœã§ããå¿ èŠããããŸãã ä»ã®ãšãããç§ã¯gestjã«ãã£ãŠææ¡ãããåé¿çã䜿çšããŠããŸãïŒã¹ã¿ãã³ã³ããŒãã³ãã宣èšãããŠããåœã®ã¢ãžã¥ãŒã«ãå®çŸ©ããŠããŸãïŒã
ãããã£ãŠããã¹ãã«ã¹ã¿ãã³ã³ããŒãã³ãã䜿çšããå Žåã¯ãã³ã³ããŒãã³ãã«whatever.component.spec.ts
ïŒ$ã®ãããªæ¥å°ŸèŸspec.ts
ãä»ããŸãã ãã®ããã«ãtscã¯ãã®ãã¡ã€ã«ãç¡èŠããŸãïŒtsconfigã§é€å€ãããŠããå ŽåïŒããããã£ãŠãngcã§ãç¡èŠãããŸãã
ç·šéïŒããã¯ngtools / webpackã®ãã°ã«èµ·å ããå¥ã®ãšã©ãŒã§ããããšãå€æããŸããã ãã®ãã±ããã¯ããã§éãããŠããŸãïŒ https ïŒ//github.com/angular/angular-cli/issues/6228
ç§ã®äŒç€Ÿã«ãšã£ãŠããã®é¢ã§ã®æ°ãã楜ãã¿ã ã·ã¹ãã ãv2.4.10ã«ã¢ããã°ã¬ãŒãããããšããæè¿ã®è©Šã¿ã§ããã®çš®é¡ã®ãšã©ãŒãæ°ååçºçããŸããã
ModuleNotFoundError: Module not found: Error: Can't resolve '../../../../../../../../$_gendir/src/components/spinner/component.ngfactory'
çŸåšã®ã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšãããŠããªããå ±æã©ã€ãã©ãªå ã®ãã¹ãŠã®ã³ã³ããŒãã³ãã®ãã°ãèšé²ãããŠããããã§ãã ããã¯ãæåã«ãã±ãããéãããšãã®ãšã©ãŒãšäžæ°å³ã«äŒŒãŠããŸãã
ããããããã«ã€ããŠä»ã«äœãã§ãããããããŸããã å
±æã©ã€ãã©ãªããå¿
èŠãªåã³ã³ããŒãã³ããçŽæ¥ã¢ãã¬ã¹æå®ãïŒã€ã³ããã¯ã¹ã§åç
§ããããã¹ãŠã®ãã¡ã€ã«ããã«ããããã«èŠããããã index.ts
ãã¡ã€ã«ã䜿çšããªãïŒããã¹ãŠã®å
±æã©ã€ãã©ãªãnode_modulesã«ç§»åããŠã¿ãŸããã
ã³ã³ãã€ã©ãnode_modules
ãã©ã«ãå
ã®ãã¹ãŠã®Angularã³ã³ããŒãã³ãã«ã€ããŠç¥ãå¿
èŠãããã®ã¯ãªãã§ããïŒ ããããäœæããããã«ããããèªã¿åãå¿
èŠãããå Žåã§ããã¢ãžã¥ãŒã«ããããã©ãããæ°ã«ããå¿
èŠã¯ãããŸããã
@ swimadude66 ãããã httpsïŒ//github.com/WealthBar/a2d3ã©ã€ãã©ãªã§ãããæ©èœããŠããããšã«ééããŸããã ãã³ãã¬ãŒãåãããã³ã³ããŒãã³ãïŒãã£ã¬ã¯ãã£ãã®ã¿ïŒãæäŸããŠããªããŠããã©ã€ãã©ãªã¯AoTã³ã³ãã€ã©ã§ãã«ãããå¿ èŠããããŸããããããªããšã䜿çšæã«AoTãã«ãã§æ©èœããŸããã
@chrisnicolaã©ã€ãã©ãªã¯ãå ¬éããåã«AoTã§ããªã³ã³ãã€ã«ããå¿ èŠããããšãã£ããã£ãŠããŸããïŒ ããã¯ãã©ã€ãã©ãªã«ç¬èªã®ã¢ãžã¥ãŒã«ãããããšãæå³ãããããçŽæã«åããŠããããã«èŠããŸãã çŸç¶ã§ã¯ãã©ã€ãã©ãªã¯ã³ã³ãã€ã«ãããŠããªãtsãã¡ã€ã«ã§ããããããžã§ã¯ãå ã®ä»ã®ãã¡ã€ã«ãšåãããã«ãã«ããŸãã 次ã«ããã¹ãŠã@ ngtools / webpackãã©ã°ã€ã³ã䜿çšããŠwebpackã«ã³ã³ãã€ã«ãããŸãã
ãã®ãã±ããã®å ã®ãšã©ãŒã§ãããindex.tsãã¡ã€ã«ãžã®ãã¹ãŠã®åç §ãåé€ããã ãã§ãv2.1.1ãŸã§ã¯ãä¿®æ£ããããããšã¯æ³šç®ã«å€ããŸãã ãã®ä¿®æ£ã¯v2.4.10ã§ã¯æ©èœããªããªã£ãããã§ãã
ããããªãã»ã©ãã¯ããããªãã®åé¡ãèªã¿ééããŸããã ããã§ã¯ãNPMãä»ããŠã³ã³ãã€ã«æžã¿ã®å ±æã©ã€ãã©ãªãååŸããŠããŸããããããžã§ã¯ãã«ããŒã«ã«TSã©ã€ãã©ãªããããŸãã ç§ã¯ä»æ£ããç解ããŠããŸããïŒ
ç§ã¯ããããæ£ããæ©èœãããã¯ãã§ããããšã«åæããŸãããããŠããªãã¯ãããã¢ããªã±ãŒã·ã§ã³ã«ã¢ãžã¥ãŒã«ãæããªãã³ã³ããŒãã³ããèŠã€ããããšã§ããã®ãšåãåé¡ã®ããã«ééããªãèãããŸãã èãããã解決çã¯ãAoTãã«ãã«å¿
èŠã®ãªããã¡ã€ã«ãšãã©ã«ããŒãé€å€ããAoTãã«ãåºæã®tsconfig.json
ã䜿çšããããšã§ãã
ç§ã¯ãã®ãšã©ãŒã«é¢é£ãããã¹ãŠã®åé¡ã解決ããããšãã§ããŸããã
åé¡ïŒããã³è§£æ±ºçïŒã¯ããšã¯ã¹ããŒãæã«è¡šç€ºãããŸãã
ãã¹ãã«ã®ã¿äœ¿çšãããã³ã³ããŒãã³ãããããŸããã åå©çšã§ããããã«å¥ã®ãã¡ã€ã«ãããšã¯ã¹ããŒããããŸãããããã«ãããi18nã¿ãŒã²ããã®å®è¡æã«åé¡ãçºçããŸããã
ããã解決ããããã«ãã¢ãžã¥ãŒã«ã宣èšããŸããïŒå¿ ããšã¯ã¹ããŒãããŠãã ããïŒã
@NgModule({ declarations: [MyUnusedComponent] })
export class IgnoreModule {}
ãšã©ãŒã®åå ãšãªã£ãä»ã®ã³ã³ããŒãã³ãã¯ãi18nããããã³ã°ããæªäœ¿çšã®ã³ã³ããŒãã³ãã§ããã
i18nããŒã«ã§ååŸããããã«ãšã¯ã¹ããŒããããŠããŸããããä»ã®ã³ã³ããŒãã³ããšåããšã©ãŒãçºçããŸããã
@Component({
template: `
<div i18n="some context@<strong i="13">@some</strong> key">some text to be translated</div>
`
})
export class LocalisationComponent {}
ããã§ãIgnoreModuleææ³ã䜿çšãããšãç°¡åã«ãã€ãã¹ã§ããŸãã
@NgModule({ declarations: [LocalisationComponent] })
export class IgnoreModule {}
解決çã§ã¯ãªã@UtopianStorm ã ãUnusedModuleãã䜿çšãããšãã¹ã±ãŒãªã³ã°ãé£ããã ãã§ãªããé åžãã³ãã«ã«å«ããã¹ãã§ã¯ãªããœãŒã¹ãã¡ã€ã«ã®ã¢ãžã¥ãŒã«å šäœãäœæãããããšãåè¿°ããŸããã
@Phmageræœè±¡ã³ã³ããŒãã³ãã®åé¡ã®åé¿çãèŠã€ããããšããããŸããïŒ é«ªãæããŠããŸãã
@ smilemadude66ããã¯ééããªãåé¿çã§ãããšããæå³ã§ã®è§£æ±ºçã§ã¯ãããŸãããããšã©ãŒãå
æããŸãã
åé¡ãçºçãããã³ã«ãã®ææ³ãé©çšã§ãããããã¹ã±ãŒãªã³ã°ãã©ã®ããã«é£ãããã¯ããããŸããã
ããã¯ããªãã®é
åžãã³ãã«ãä¹±éã«ããŸãããããã¯éèŠã§ããïŒ Angularã®ç¶æ
ãããç§ã¯ããããã§ã«ç§ãã¡ã®ã¹ããã¯ãã¡ã€ã«ã§æ£ããã£ãŠãããšæããŸããã
ãããã«ãããnode_modulesãã©ã«ããŒã®å
èã«çŽæ¥ã¢ã¯ã»ã¹ããããããã¯ããã«ã¯ãªãŒã³ãªã¢ãããŒãã§ãããã
å°ãªããšããç§ãæåã«ãã±ãããéãããŠãŒã¹ã±ãŒã¹ããã¯ãå®è¡å¯èœãªåé¿çãããããŸããã ãã¹ãŠã®ããŒãããŒããŒã ããæªäœ¿çšã®å ±æã³ã³ããŒãã³ãã®ãªã¹ããç¶æããããšã¯äžå¯èœã§ãã
ããã«ãã³ã³ãã€ã©ãé床ã«å³æ Œã§ãããšããçç±ã ãã§ãåºæ¬çã«2ã€ã®å®å šãªã¢ããªãåºè·ããããšã¯ãç§ãããããªã劥åæ¡ã§ãã Angularã¯ãã§ã«ããªã倧ããã®ã§ãæªäœ¿çšã®ã³ã³ããŒãã³ãã®ã¢ãžã¥ãŒã«å šäœãåºè·ããŠã圌ãã®æèŠã®ããã³ã³ãã€ã©ãŒãæºè¶³ãããããšãæ£åœåããããšã¯ã§ããŸããã
@ swimmadude66ãªãã»ã©ã å¥ã®ã¢ãžã¥ãŒã«ãè¿œå ããããšã§å€§ããªéããçãããšæãããå Žåã¯ãèªåã§ããäžåºŠç¢ºèªããããšããå§ãããŸãããããžã§ã¯ãå šäœã§å ±æããæªäœ¿çšã®ã¢ãžã¥ãŒã«ã1ã€ã ãäœæããã®ã§ã¯ãªãã解æŸããå¿ èŠã®ããã³ã³ããŒãã³ãããšã«1ã€ã®ã¢ãžã¥ãŒã«ãäœæããããšãæå±ããŠããããã§ããé床ã«å³æ Œãªã³ã³ãã€ã©ãã-æœåšçã«dusinsã
å ±æã³ãŒãããŒã¹ãéåžžã«å€§ãããããæªäœ¿çšã®ã¢ãžã¥ãŒã«ãã¢ããªå ã§çŸ€ãæããŠæ倧ã®ã¢ãžã¥ãŒã«ã«ãªãããšã«æ³šæããŠãã ããã ç§ãã¡ã®ç¶æ³ã¯100ïŒ å žåçãªãã®ã§ã¯ãããŸããããããã§ããµããŒããããçç±ã®ç¯å²å ã«ãããšç§ã¯ä¿¡ããŠããŸãã
æ£çŽãªãšããããã®ãã±ãããã©ãã«ãè¡ããªãã®ã5ãæéèŠãåŸãå ±æã³ãŒããªããžããªã匷å¶çµäºãããªã©ãä»ã®ãªãã·ã§ã³ãæ€èšããŠããŸãã
ç§ã¯ããªããšãŸã£ããåãåé¡ã«çŽé¢ããŠããŸãã @ swimmadude66 ã ãããæå¶å¯èœãªèŠåã§ã¯ãªããšããäºå®ã¯ã°ãããŠããŸãã
芪æãªãAngularããŒã ãããã«ã€ããŠäœãã§ããããšã¯ãããŸããïŒ
@DzmitryShylovich䜿çšããŠããªãmock.ts
ãã¡ã€ã«ãé€å€ããã«ã¯ã©ãããã°ããã§ããïŒ tsconfig.app.json
ã tsconfig.json
ã tsconfig.ng-cli.json
ã«å
¥ããŠã¿ãŸããããã©ããããŸããããªãã£ãããã§ãã
ãŸã£ããåããŠãŒã¹ã±ãŒã¹ã§åãåé¡ã«çŽé¢ããŠããŸããããŒã«ã¢ããã䜿çšããŠãããããæªäœ¿çšã®ã³ã³ããŒãã³ãã¯æçµçãªãã³ãã«ã«ã¯ãªããŸããã
ãããæããŠãã ããïŒ ããã¯å€§ããªè¿·æã§ãããä»äºãæ¢ããŠããŸãã
ç§ãããã«åºããããã®ã§ããšãŠãã€ã©ã€ã©ããŸãã
@mlakmalãªã©ã次ã®ãããªã³ãŒãã§ãšã©ãŒãçºçããŠãã
export class CustomGlobalModalComponent extends AppGlobalModalComponent {}
AppGlobalModalComponent
@Component
ã¢ãããŒã·ã§ã³ãåé€ãããã NgModule
ã§AppGlobalModalComponent
ïŒäœ¿çšå¯èœãªå ŽåïŒã宣èšããŸã
ãã¹ãã§äœ¿çšããã¢ãã¯ãã£ã¬ã¯ãã£ããäœæããŸããã ãããŠãAOTã³ã³ãã€ã«ã§ãã®åé¡ãååŸããŸãã ãã®ã¢ãã¯ãã£ã¬ã¯ãã£ãããã¬ãŒã³ã¢ãžã¥ãŒã«ã«ã€ã³ããŒãããããããŸããã ãããä¿®æ£ããŠãã ããã
ãã®åé¡ã®ãfreq1ïŒlowãã¿ã°ã¯ãAoTãä»äºãããã®ã«éåžžã«å€§ããªèŠçã§ããã人ã ããããæ°ã«ããªããšããäºå®ã«ããã®ã§ã¯ãªãããšæããŸãã ãã®ãããªåçŽã ãèŠçãªåé¡ããAngularã®äž»èŠãªè²¢ç®è ããæ¬è³ªçã«ãŒãã®ãã£ãŒãããã¯ãåãåã£ãããšã¯å°ãä¿¡ããããªãããšã§ãã
ãšã«ãããç¹ã«èšåãããŠããªããã¡ã€ã«ãé€å€ããæ¹æ³ããããŸãã åœåãã¿ãŒã³ïŒäŸïŒ .spec.ts
ã .abstract.ts
ã .stfu-aot.ts
ïŒãããå Žåã¯ãAoTçšã«å¥ã®tsconfig.json
ãã¡ã€ã«ãäœæãã代ããã«ããã䜿çšã§ããŸãïŒ ngc -p tsconfig-aot.json
ã ãã®ãã¡ã€ã«ã§ã¯ã "exclude": ["./app/**/*.stfu-aot.ts"]
ã䜿çšããŠãã¡ã€ã«ãé€å€ã§ããŸãã ç
©ãããã§ãããããŸãããã¯ãã§ãã
ç·šéïŒäžèšã¯ãã³ã³ããŒãã³ãããç¶æ¿ããabstract
ã¯ã©ã¹ã§ã¯æ©èœããªãããã§ãã ããŒã ïŒïŒ
ç§ãããã«ééããã®ã§ãã€ã©ã€ã©ããŸãããã«ãaotã®å Žåãå ±éã®ã³ã³ããŒãã³ããä»ã®ã¢ããªã§å ±æããããšã¯ã§ããŸãã
ãã®åé¡ã®äžè¬çãªã±ãŒã¹ã®ããã€ãã¯ããµãŒãã¹ã¯ã©ã¹ã«@Componentãè¿œå ããªãã§ãã ããã
// just remove this
@Component({
providers: []
});
@Injectable()
export class serviceClass {}
ãµãŒãã¹ããµãŒãã¹ã«æ³šå
¥ããã·ããªãªããããŸãã äžèŠãããšã@ Componentãè¿œå ããã ãã§ç°¡åã«å®è£
ã§ããããã«æããŸãã ãããã£ãŠãAngularã®ããã¥ã¡ã³ããæŽæ°ããŠãè€éãªãµãŒãã¹ã«å¯Ÿãããã®ãœãªã¥ãŒã·ã§ã³ã瀺ãå¿
èŠããããŸãããã®åé¡ã解決ããããã«ã@ Componentãåé€ããŸããã ãµãŒãã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãŒã«æ¬¡ãè¿œå ããŸããã
constructor(@Inject(ExampleService) private exampleService: ExampleService)
@Component()
ãã³ã¬ãŒã¿ããµãŒãã¹ã«è¿œå ããå¿
èŠã¯ãããŸããã @Injectable()
ã®ã¿
FWIW XYZComponent
ã¢ããªã³ã³ããŒãã³ããæ¡åŒµããMockXYZComponent
ããããŸãããä»æ§ã§ã®ã¿äœ¿çšãããŸãïŒåãã»ã¬ã¯ã¿ãŒãããããã AppModule
ã«ã€ã³ããŒãã§ããŸããïŒã
ããã¯æå¹ãªãŠãŒã¹ã±ãŒã¹ã§ã¯ãããŸãããïŒ
@ alastair-ãããç§ã¯ããªããäœãæå³ããã®ãç解ã§ããŸããã ã³ã³ããŒãã³ããã³ã³ããŒãã³ããšããŠäœ¿çšããå Žåã¯ã @Component()
ãã³ã¬ãŒã¿ãè¿œå ããŸãã ã³ã³ããŒãã³ããããŒã¹ãšããŠäœ¿çšããå ŽåïŒã³ã³ããŒãã³ããšããŠç¶æ¿ããããã ãã§ãã³ã³ããŒãã³ããšããŠã¯äœ¿çšããªãå ŽåïŒããã³ã¬ãŒã¿ã䜿çšããå¿
èŠã¯ãããŸããããããµã¯ã»ãµãã§ãã³ã¬ãŒã¿ãç¶æ¿ããŠäœ¿çšããã ãã§ãã
ãŠããããã¹ãã«ã€ããŠ-å¿çã§ããŸãããããããç¹å¥ãªTestModuleãäœæããå¿
èŠããããŸããïŒ çŸåšããŠããããã¹ãã¯è¡ã£ãŠããŸããã
@tytskyiãã³ã¬ãŒã¿ã®ç¶æ¿ããµããŒããããŠããªãããšãç解ããŸããã ããã¯æè¿å€ãããŸãããïŒ
ãŠãŒã¹ã±ãŒã¹ã¯ã以äžã®ããã«ãµãã³ã³ããŒãã³ããã¢ãã¯ããããšã§ãã ã©ã¡ããã»ã¬ã¯ã¿ãŒãååŸããããã«@Componentãã£ã¬ã¯ãã£ããå¿ èŠã§ãã
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
AppModule
]
}).overrideModule(AppModule, {
remove: {
declarations: [SelectionToolComponent]
},
add: {
declarations: [MockSelectionToolComponent]
}
}).compileComponents();
ããããããã¯OPAOTã³ã³ãã€ã«ãšã©ãŒãçæããŸãã
ç§ã®ãã€ã³ãã§ã¯ãããã¯æå¹ãªãŠãŒã¹ã±ãŒã¹ã§ãããã®å ŽåãAOTã³ã³ãã€ã«ã¯ç±å¿ããããããããžã§ã¯ãã®äžéšãšããŠä»æ§ãç¡èŠããŸãã
ãã¶ãç§ã®è§£æ±ºçã¯èª°ããå©ããã§ãããïŒç§ã¯ãã¹ãŠã®ã¢ãã¯ã³ã³ããŒãã³ãã宣èšãããããŒã¢ãžã¥ãŒã«ãäœæããŸããã ãã®ã¢ãžã¥ãŒã«ã¯äœãã€ã³ããŒããããŸãããAoTã³ã³ãã€ã©ãæºè¶³ãããã ãã§ãã ãããã£ãŠãã©ã®ã¢ãã¯ã³ã³ããŒãã³ããã³ã³ãã€ã«ãããã³ãŒãã®äžéšã§ã¯ãããŸããã çæ³çã§ã¯ãããŸããããåé¡ã¯è§£æ±ºããŸããã
ãã£ãšè¯ã解決çã«ã€ããŠèããŠã¿ããã§ãã
ããã¯éåžžã«å¥åŠã§æ¥ããããã®ã§ããã®åé¡ã¯2016幎12æã«éããããŸã ãã®åé¡ããããŸãã ã¢ããªå šäœã®æ§é ãaotã³ã³ãã€ã«ã䜿çšããããã«å€æããŸããã é 延ããŒãããã4ã€ã®ã¢ãžã¥ãŒã«ãš60ãè¶ ããã³ã³ããŒãã³ãããããŸãã ã³ã³ãã€ã©ã¯ãïŒãšã©ãŒã瀺åããããã«ïŒããã€ãã®ã³ã³ããŒãã³ãã«ã€ããŠã®ã¿æå¥ãèšããŸããããã¯ãé 延ããŒããããã¢ãžã¥ãŒã«ã®1ã€ã®å®£èšã®äžéšã§ãããç§ã«ã¯å¥åŠãªããšã§ãã
ãã§ã«ããã€ãã®ã¢ãžã¥ãŒã«ã®äžéšã§ããã³ã³ããŒãã³ãã«ãšã©ãŒãäžããããšãããããŸãã
åãåé¡
Angularã®ã³ã³ãã€ã©ã¯ãtsconfigã«æž¡ãããã¡ã€ã«ã»ãããæ€çŽ¢ããŸãããã®ããããããããã¡ã€ã«ãé€å€ãããšããã®ãã§ãã¯ããé€å€ããå¿ èŠããããŸãã
ããã¯æ¬åœã«è¿·æã§ã:(
@ alastair-toddç³ãèš³ãããŸããããä»ã®å€ãã®éç¥ã§ããªãã®è³ªåããã®éç¥ã倱ããŸããã ããªãã¯æ£ããã§ã -
ãã³ã¬ãŒã¿ã®ç¶æ¿ã¯ãµããŒããããŠããŸããã
@robwormaldããã®åçãåç §ããŠãã ãã
Angularã®ã³ã³ãã€ã©ã¯ãtsconfigã«æž¡ãããã¡ã€ã«ã»ãããæ€çŽ¢ããŸãããã®ããããããããã¡ã€ã«ãé€å€ãããšããã®ãã§ãã¯ããé€å€ããå¿ èŠããããŸãã
ãããã£ãŠã selection-tool.component.mock.ts
ã®ããã«ãã¢ãã¯ãã¡ã€ã«åã®èŠåãäœæããããšãã§ããŸãã 次ã«ãçµç±ã§é€å€ããŸã
"exclude": [
//... other excludes
"**/*.component.mock.ts"
]
誀ã£ãŠééã£ããã¿ã³ãã¯ãªãã¯ããŠããŸããŸãããããããªããã
+8ãæãããã¯ãŸã åé¡ã§ãã ããã§ãåãåé¡ERROR in Cannot determine the module for class PasoFooterComponent
Angularéçºè ããããã®ãã¡ã€ã«ãç¡èŠããããšã¯éåžžã«éèŠã ãšæããŸãã
誰ããç§ããã®ã³ãŒããèŠã€ããããšãã§ããå Žæã«ã€ããŠã®ãã³ããç§ã«äžããããšãã§ããã°ãç§ã¯å¹žãã«ãªããŸã
èªåã§ä¿®æ£ããŸãã ããã¯éåžžã«è¿·æãªè¿·æã§ãã ããã«èµ°ã£ã
æšæ¥ãã
ããããã°ã§ã¯ãªãæ©èœã ãšèª°ããæã£ããããã©ã°ãç«ãŠãŠã¯ã©ãã§ãããã
ãã®ããïŒ
2017幎8æ9æ¥æ°Žææ¥åå2æ40åãLeonardo [email protected]
æžããŸããïŒ
+8ãæãããã¯ãŸã åé¡ã§ãã ããã§åãåé¡ãã§ããŸããã®ãšã©ãŒ
ã¯ã©ã¹PasoFooterComponentã®ã¢ãžã¥ãŒã«ã決å®ããŸãâ
ã³ã¡ã³ãããã®ã§ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/angular/angular/issues/13590#issuecomment-321082545 ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AEM6r7FOTLcicWJN3Oijw2pwKTLGL6cFks5sWM61gaJpZM4LSAwS
ã
@samirotivè€è£œã¯ãããŸããïŒ
@robwormaldãèšã£ãããã«
Angularã®ã³ã³ãã€ã©ã¯ãtsconfigã«æž¡ãããã¡ã€ã«ã»ãããæ€çŽ¢ããŸãããã®ããããããããã¡ã€ã«ãé€å€ãããšããã®ãã§ãã¯ããé€å€ããå¿ èŠããããŸãã
åãåé¡ããããŸãããããªããšã解決ã§ããŸããã ããšãã°ãtsãã¢ããªãã©ã®ããã«ãã©ã³ã¹ãã€ã«ããããèŠãŸãã
"tsc": "rimraf out-tsc/app && tsc -p ./src/tsconfig.app.json",
ãããŠãããã¡ã€ã«ãtsconfigãªãã·ã§ã³ã䜿çšãããããtypescriptãé 延ããŒããããã¢ãžã¥ãŒã«ãã³ã³ãã€ã«ããªãã£ãããšã«æ°ã¥ããŸããã
æœè±¡ã¯ã©ã¹ïŒãã³ã¬ãŒã¿ãªãïŒã§ãã®ãšã©ãŒãçºçããŸã
æè¿ãç§èªèº«ããã®åãåé¡ã«ééãå§ããŸããã
ãšã©ãŒãèŠåã«å€æŽããå Žåã¯+1ã
ç°¡åãªä¿®æ£ã®ããã§ãã ãªãé ããã®ã§ããïŒ
ããã¯åºæ¬çãªèŠä»¶ã§ã-åç
§ãããŠããªããã¡ã€ã«ãæ®ããŸãã
ãã®å¶éã¯ã倧èŠæš¡ãªãããžã§ã¯ãã§ã¯åé¡ã«ãªããŸãã ãããèŠåã«å€æŽããŠãã ããã
ããŸããŸãªããŒãžã§ã³ã®AngularããµããŒãããããã±ãŒãžãå ¬éããå ŽåããããŸãã ãããŠããŠãŒã¶ãŒã¯ãããã®1ã€ãéžæããããšãæåŸ ãããŸãã
ããšãã°ã HttpClient
ïŒAngular> = 4.3ãŠãŒã¶ãŒïŒãšHttp
ïŒAngular <4.3ãŠãŒã¶ãŒïŒã®äž¡æ¹ã®ãã¡ã€ã«ãæäŸããããã±ãŒãž
çŸåšã ngcã¯ã䜿çšãããã©ããã«é¢ä¿ãªãããœãŒã¹ãã£ã¬ã¯ããªå ã®ãã¹ãŠã®ãã¡ã€ã«ãã³ã³ãã€ã«ããŸãã ãŸãã¯ããã«ãã倱æããŸãã
ç§ãããããšã¯ããã§ããïŒ
ãã¹ãŠã®ã¹ã¿ã/ã¢ãã¯ã³ã³ããŒãã³ãã.mock.tsæ¡åŒµåã§ä¿åãã tsconfig.app.jsonã®ãexcludeãé åã次ã®ããã«æŽæ°ããŸããã
...
"exclude": [
"test.ts",
"**/*.spec.ts",
"**/*.mock.ts"
]
...
AOTã¯ãããã®ãã¡ã€ã«ã®ã³ã³ãã€ã«ãã¹ãããããããã«ãªããŸãã
äžåºŠã«äœ¿çšãããããã§ã¯ãªããAoTã³ã³ãã€ã«äžã«ãã®åé¡ã«è
¹ãç«ãŠããäžè¬çãªã³ã³ããŒãã³ãã䜿çšããŠnpmã©ã€ãã©ãªãå®è¡ããŠããŸãã解決çatmã¯ããã¹ããããžã§ã¯ãã§äžçš®ã®UnusedComponentsModuleãäœæããããšã§ãã ãŸãã NO_ERRORS_SCHEMA
ãå¿
èŠã§ããããããªããšãæªäœ¿çšã®ã³ã³ããŒãã³ãå
ã§äœ¿çšã§ããä»ã®ã³ã³ããŒãã³ãã«ã€ããŠèªçŽããŸãããããã宣èšãããšã2ã€ã®ã¢ãžã¥ãŒã«ã§åãã³ã³ããŒãã³ãã宣èšã§ããªããšããå¥ã®åé¡ãçºçããŸãïŒïŒã«é¢é£ïŒ 10646ïŒã
ç§ã®çŸåšã®ã¢ãžã¥ãŒã«ïŒ
import {NgModule, NO_ERRORS_SCHEMA} from '@angular/core';
import {CommonModule} from '@angular/common';
import {ReceiverPageComponent} from 'cb-web-platform';
@NgModule({
imports: [
CommonModule,
],
declarations: [
ReceiverPageComponent
],
schemas: [
NO_ERRORS_SCHEMA // IMPORTANT: need that for AoT compilation
]
})
export class UnusedComponentsModule {
}
ããã¯æ¬åœã«èŠåã«ãªãã¯ãã§ãã ç§ãã³ãŒãããŒã¹ãå
±æããããšããŠããŸãããã³ã³ããŒãã³ããngmoduleã®äžéšã§ã¯ãªããšãããã®åé¡ã«çŽé¢ããŠããŸãã
ããã§ã®åé¡ã¯ããšã©ãŒã§ã¯ãªãæªäœ¿çšã®å€æ°ãšãŸã£ããåãã§ãã ãããããã®èŠåã
ãããããªãã®ã³ãŒãã§ãããšããããã¯ç°¡åã§ãã ãããããã€ãã®NPMè§åºŠã©ã€ãã©ãªïŒããã€ãã®ãããã³ãŒãïŒã®åé¡ã§ãããšããããã¯æ¬åœã«ãå°»ã®çã¿ã§ã:)
ãšã©ãŒã§ã¯ãªãèŠåã«ã§ããªãçç±ã誰ãã説æã§ããŸããïŒ
ç§ã®å Žåãã§ããã°ngModuleã«æ¥ç¶ãããŠããã³ã³ããŒãã³ãããèšèªãæœåºããããã§ãªãã³ã³ããŒãã³ãã¯ç¡èŠããããšæããŸãã åºæ¬ã³ã³ããŒãã³ããšã¢ããªã±ãŒã·ã§ã³åºæã®ãã©ã«ããŒãå«ãã¡ã€ã³ã¢ããªãã©ã«ããŒã1ã€ãããxi18nã䜿çšããŠãã®ãããªãªãŒããŒã©ã€ããããã³ã³ããŒãã³ããæœåºããããšãããšã Cannot determine the module for class...
ãšã©ãŒãã¹ããŒãããç¡èŠããŠæœåºããããšããããŸãããã®æªäœ¿çšã®ã³ã³ããŒãã³ãã䜿çšããã«ç¶è¡ã§ããŸãã
åé¡ã«ãªãå¯èœæ§ããããšèããããšãã§ããã®ã¯ããã®é害ã®ããã³ã³ããŒãã³ããã¡ã€ã«ã§å®çŸ©ãããŠããã¯ã©ã¹ãããªãŒããŒã©ã€ããããã³ã³ããŒãã³ããäœæããããã®ããŒã¹ãšããŠåŒãç¶ã䜿çšããŠãããããã³ã³ãã€ã«ããå¿ èŠããããããã®ã³ã³ããŒãã³ãã¯å¿ èŠãªããšããããšã§ãã泚éã¯ããªãŒããŒã©ã€ãã³ã³ããŒãã³ãã§äœ¿çšã§ããªãããã«çºçããŸãã å°ãªããšãã掟çã³ã³ããŒãã³ãã§ãããã®ã¢ãããŒã·ã§ã³ãåäœæããŠæ©èœãããå¿ èŠããããããã§ããªããšæããŸãã
@Xesenixå°ãªããšãããã¯ãªãã·ã§ã³ã§ããã¯ãã§ãã 決å®ã¢ãžã¥ãŒã«= false / trueã®ããã«ã ä»ã¯ãããã§ãã
2017幎11æ1æ¥ã«æ»ããŸãã
åž°åœåŸãã¡ãã»ãŒãžã«è¿ä¿¡ããããŸãã
ç·æ¥ã®å Žåã¯ãã¡ãŒã«ã®ã³ããŒãéä¿¡ããŠãã ãã
[email protected]ã«æè¡çãªåé¡ããã以å€ã®å Žåã¯
[email protected]ã ãã®åŸãå¥ã®åŸæ¥å¡ãããªãã®ã¡ãŒã«ã確èªããŸã
åãå
¥ããã
泚ïŒããã¯ããReïŒ
[angular / angle] Angular2AOTã³ã³ãã€ã«-"ã¢ãžã¥ãŒã«ãå€å¥ã§ããŸãã
ã¯ã©ã¹çšïŒ...æªäœ¿çšã®å€ãã®ã³ã³ããŒãã³ãïŒ "ïŒïŒ13590ïŒ"éä¿¡
2017幎10æ23æ¥08:13:17ã
ããã¯ãããªããåãåãå¯äžã®éç¥ã§ã
ãã®äººã¯äžåšã§ãã
ã©ãããŠããã¯ã»ãŒ1幎åŸããŸã ä¿®æ£ãããŠããªãã®ã§ããïŒ AOTãæ©èœãããããã«é«ªãåŒã£åŒµã£ãŠããŸããããã®åé¡ã«ãããã¬ã³ã¬ã®å£ã«ã¶ã€ãããŸãã
解決çãããããšã@ rahul-sivalenka-wtcïŒ
ããªãã説æããŠããããã«ã tsconfig.app.json
"**/*.mock.ts"
ãé€å€ããããšã§ãåé¡ã解決ããããšãã§ããŸããâ€ïž
ãæäŒãã§ããŠããããã§ãð
ç§ããã®åé¡ã«ééããŸããã ããããç§ã«ãšã£ãŠã¯ãdoduleãã€ã³ããŒããããã¹ãééã£ãŠé 眮ããããã§ã
解決çã¯ãããŸããïŒ ïŒã³ã³ããŒãã³ãè§åºŠ5ã®ã¢ãžã¥ãŒã«ã決å®ã§ããŸããïŒ
https://stackoverflow.com/questions/47119135/cannot-determine-the-module-for-component-angular-5
ããã¯ããããseverity3: broken
ã«ããã¯ãã§ãã è€æ°ã®ãã«ãã¿ãŒã²ãããšå€æ
çãªäŸåé¢ä¿ïŒå€ãã®ãŠãŒã¹ã±ãŒã¹ãäžã«ååšããŠããïŒãæã£ãŠããç§ãã¡ã«ãšã£ãŠããã®åé¡ã¯ãã¯ã¬ã€ãžãŒã§è€éãªãã«ãã»ããã¢ãããªãã§ãã«ããæ©èœããã®ã劚ããŸãã
ãã®åé¡ã®è¯ã解決çã¯ãŸã ãããŸããïŒ IgnoreModuleã¯åãªãåé¿çã§ããããã®åé¡ã«å¯Ÿããå®éã«ã¯è¯ã解決çã§ã¯ãããŸããã ãšã©ãŒãèŠåã«å€æŽããã®ã¯çŽ æŽãããããšã§ãïŒ
ç§ãã¡ã®è§£æ±ºçã¯ããã¡ã€ã«ãååŠçã«æž¡ã@ngtools/webpack
ã«transform
é¢æ°ãè¿œå ããããŸããŸãªã³ã³ãã€ã«æã®èšå®ã«åºã¥ããŠã³ã³ããŒãã³ããifdef
ããããšã§ããã éåžžã«ãéåžžã«éãã§ãããæ©èœçã§ãã
æåã«app.module.tsã«ãã¹ãŠã®è§åºŠäŸåé¢ä¿ãã€ã³ããŒãããŠãããã³ã³ããŒãã³ããã€ã³ããŒãããŠã¿ãŠãã ããã
`----------------æåã®ã€ã³ããŒãäŸåé¢ä¿ã¢ãžã¥ãŒã«-----------------------
import {BrowserModule} from '@ angle / platform-bâârowser';
import {CommonModule} from "@ angle / common";
import {NgModule} from '@ angle / core';
import {RouterModuleãRoutes} from '@ angle / router';
import {HttpModule} from '@ angle / http';
import {ReactiveFormsModule} from '@ angle / forms';
'@ angle / platform-bâârowser / animations'ãã{BrowserAnimationsModule}ãã€ã³ããŒãããŸãã
-------------次ã«ããµãŒãã¹ã¢ãžã¥ãŒã«ãã€ã³ããŒãããŸã------------------------
import {ApplyFormPostService} from './ Services / apply-form-post.service';
import {NavBarColorService} from './ Services / nav-bar-color.service';
-----------------------æåŸã«ã³ã³ããŒãã³ãã¢ãžã¥ãŒã«ãã€ã³ããŒãããŸã----------------------- -
import {AppComponent} from './ app.component';
import {HeaderComponent} from './ components / header / header.component';
import {CareerComponent} from './ components / career / career.component';
import {HomeComponent} from './ Components / home / home.component'; `
ã©ãããããããããã¯AOTã³ã³ãã€ã«ãšã©ãŒã¹ããŒã解決ããŸããã¯ã©ã¹ã®ã¢ãžã¥ãŒã«ã決å®ã§ããŸãã---æ¬çªã¢ãŒãã§
@KarthikSamyakãã®åé¡ã¯ãã¢ãžã¥ãŒã«ã«å«ããå¿ èŠã®ããã¯ã©ã¹ãæã£ãŠãã人ã«é¢ãããã®ã§ã¯ãããŸããã ããã¯ããã¹ãŠã®ã¢ãžã¥ãŒã«ããæå³çã«é€å€ãããŠããã³ã³ããŒãã³ãã©ã€ãã©ãªã䜿çšããŠããç§ãã¡ã®ããšã§ãã ãããã¯æªäœ¿çšã®ã³ãŒãã§ãããã³ã³ãã€ã©ãŒã¯ç¡èŠããå¿ èŠããããŸãã 代ããã«ãã³ã³ãã€ã©ãŒã¯ããããæ€åºãããšå埩äžèœãªãšã©ãŒãã¹ããŒããŸãã
ãã®ãšã©ãŒãèŠåã«å€ããã®ã¯æ¬åœã«ç°¡åãªå€æŽã§ããã¯ãã§ãããäœããã®çç±ã§1幎以äžããããæè¿ããŒããããã§pri_col1ããpri_col2ã«ç§»åãããŸããã
ãã®åé¡ãžã®å¯Ÿå¿ãå®å šã«æ¬ åŠããŠããAngularããŒã ã«å¯ŸããŠãç§ã¯ãŸããŸãäžæºãåãããŠããŸãã åœç€Ÿã¯æçµçã«ã³ã³ããŒãã³ãã©ã€ãã©ãªã®äœ¿çšãå®å šã«æ念ãã代ããã«ãã¡ã€ã«ãæåã§ã³ããŒããããšãéžæããŸããã ã»ãŒåäžã§ãããå ±æãããŠããªãã³ã³ããŒãã³ãã«åé¡ããããããããã¯çæ³ããã¯ã»ã©é ããã®ã§ãã
AngularããŒã ããã®åé¡ãããèªãã ãããignoreUnusedComponentsãã®ã³ã³ãã€ã©èšå®ãè¿œå ããŠããã®ãã¬ãŒã ã¯ãŒã¯ã®äœ¿çšãç¶ããŸãããã
ããããŸãããç§ã¯å Žæhttps://github.com/angular/angular/blob/master/packages/compiler/src/aot/compiler.ts#L605 @tboschãèŠã€ããŸãããããããã§å©ããŠããããäœãæ¹æ³ãèšãããšãã§ããŸãé©åã«èŠåããŸããïŒ ãã®AoTã³ã³ãã€ã©ã§ã¹ããŒãããèŠåã¯è¡šç€ºãããããšã©ãŒã®ã¿ã衚瀺ãããŸãã äžèšã®ããã«ãã³ã³ãã€ã©ãªãã·ã§ã³ãè¿œå ã§ããŸãã
ãã®åé¡ã¯ãè€éãªãããžã§ã¯ãã«ãšã£ãŠã¯èŠçã§ãã ç§ã®ç¹å®ã®ã±ãŒã¹ã¯https://github.com/angular/angular/issues/13590#issuecomment-331820496ã§ã
ç§ãã¡ã®ãŠãŒã¹ã±ãŒã¹ã¯åãã§ãã ã¢ãžã¥ãŒã«/ã³ã³ããŒãã³ãã®ã©ã€ãã©ãªã䜿çšããŠãã¢ããªãéåžžã«ç°¡åã«äœæããå¿ èŠã«å¿ããŠå¥æ°ã®ã¢ããªã眮ãæãããæ¡åŒµãããã§ããããã«ããããšèããŠããŸãã
ä»ã®æ¹æ³ã§ãåé¡ãçºçããŠããŸããã¢ãžã¥ãŒã«å ã®1xã³ã³ããŒãã³ãã眮ãæããå Žåã¯ãæ°ããã¢ãžã¥ãŒã«ãäœæããããã«ãŸã å¿ èŠãªã³ã³ããŒãã³ããã€ã³ããŒãããŸãã
import { HeaderComponent, SidebarComponent } from '@mylibs/layout';
import { FooterComponent } from './footer.component';
@NgModule({ declarations: [ HeaderComponent, SidebarComponent, FooterComponent ] })
export class MyLayoutModule { }
@NgModule({ imports: [ MyLayoutModule ] })
export class AppModule { }
ãšã©ãŒã¯æ¬¡ã®ãšããã§ãã`HeaderComponentã¯2ã€ã®ã¢ãžã¥ãŒã«ã§å®£èšãããŠããŸãïŒ lib /module.tsãšapp / module.ts
代ããã«èŠåã§ãããšãå°ãªããšãåé²ããããšãã§ããŸã:(
å®çŸããã°ãã-ãã®åé¡ã®èªçæ¥ããã§ãšã:)
1幎åŸããŸã ãããèŠåã«å€æŽããããšã¯ã§ããŸããã ã°ãããŠããã
æåéãããã®åé¡ã«ãééããŸããã ã³ã³ãã€ã©ã¯ããã¹ãã§ã®ã¿äœ¿çšãããã¢ãã¯ããã«ããããšããŸãããã¡ã€ã³ã¢ãžã¥ãŒã«ã®äžéšã§ã¯ãªãããã倱æããŸãã ãã¡ã€ã«ãå¿ èŠãªãããšãããã£ãŠããå Žåã¯ãããããèŠåã«ãªããŸãã
ãããä¿®æ£ããŠãã ããã èŠåã«ããŠãã ããïŒ
Angular 5 aotãã«ãã«é¢ããç§ã®äžè¬çãªçµéšã¯ãææãããå°ãªãã§ãã
ããã€ãã®è°è«ã®åŸã httpsïŒ//gitter.im/angular/angularïŒat = 5a551f565a9ebe4f756843b2ã¢ãžã¥ãŒã«ã¯åãªãã³ã³ãã€ã«ã³ã³ããã¹ãã§ããããã®ããŸãšããæ¹æ³ã§ã¯ãªãããã«èŠãããããã¢ãžã¥ãŒã«ããšã«1ã€ã®ã³ã³ããŒãã³ããäœæããå¿ èŠããããšããçµè«ã«éããŸããã ã
ããã¯æŽå²æžã®å€§ããã§ãã
@Xesenix ...ã³ã³ããã¹ããšçµç¹ã¯å šäœã®2ã€ã®éšåã§ãã
誰ãããŸã ããã§ç«ã¡åŸçããŠããå Žåã«åããŠãåé¿çãšããŠãã®ã¹ã¯ãªãããã€ã³ã¹ããŒã«åŸã®ã¹ã¯ãªãããšããŠå®è¡ããããšãã§ããŸã
const replace = require('replace-in-file');
const filesToFix = [
{
files: 'node_modules/@angular/compiler/esm2015/compiler.js',
from: ['throw syntaxError(messages.join(\'\\n\'));'],
// Actually this does nothing , just leave it blank should do
to: [`console.warn(\'Angular compiler warning\');\n\t\tconsole.warn(messages.join(\'\\n\'));`]
}
]
filesToFix.forEach((i) => {
try {
const changes = replace.sync(i);
if (changes.length > 0) {
console.log('Modified files:', changes.join(', '));
}
}
catch (error) {
console.error('Error occurred:', error);
}
});
Angularã³ã³ãã€ã©ã¯tsconfigããã®åºåã䜿çšããããã _tsconfig.app.json_ãå€æŽããŠãã€ã³ã¯ã«ãŒãããããªããã¡ã€ã«ãé€å€ããŸãã
äŸãã°"exclude": [
"test.ts",
"**/*.spec.ts",
"**/*.mock.component.ts",
]
@ andela-andrewmakenziããã¯ä»¥åã«ææ¡ãããŠããããã®å·šå€§ãªãã£ããã®ããã«äžã«ãããŸãïŒãã¹ãŠãèªãã§ããªãããšã¯ãŸã£ããæ¥ãã¹ãããšã§ã¯ãããŸããïŒã ãã ãããã¬ã«ãã¡ã€ã«ïŒindex.tsïŒã䜿çšããã©ã€ãã©ãªå ã®1ã€ã®ã³ã³ããŒãã³ãã«äŸåããŠããå Žåã¯ãåé¡ãçºçããŸãã ãã¬ã«ãã¡ã€ã«ããã³ã³ããŒãã³ããã€ã³ããŒããããšãã³ã³ãã€ã©ã¯ãã®ãã¬ã«ãã¡ã€ã«ã§åç §ãããŠãããã¹ãŠã®ã³ã³ããŒãã³ããèªã¿èŸŒãããšããã¢ãžã¥ãŒã«ã«å«ãŸããŠããªããšæå¥ãèšããŸãã ããã«ãããåå©çšå¯èœãªã³ã³ããŒãã³ãã©ã€ãã©ãªãããã±ãŒãžåããããšãå°é£ã«ãªããŸããããã¯ãåºæ¬çã«ãããããã³ã³ããŒãã³ãã¢ãŒããã¯ãã£ã®èŠç¹ã§ãã
ããªãã®ãœãªã¥ãŒã·ã§ã³ã¯ãã¢ãã¯ã³ã³ããŒãã³ããæã£ãŠããŠããã¹ããå®è¡ããŠããªããšãã«ãã®ãšã©ãŒãçºçãã人ã«æé©ã§ãã ããããããªãã®çµç¹ïŒç§ã®ãããªïŒãå ±éã®ã³ã³ããŒãã³ãã©ã€ãã©ãªãäœæããç¹å®ã®ãããžã§ã¯ãã«å¿ èŠãªãã®ã ããåã蟌ãããšããå ŽåãTSCã®é€å€ã¯æ®å¿µãªãã圹ã«ç«ã¡ãŸããã
@ andela-andrewmakenziïŒããªãã®ææ¡ã¯ä»ã®ãšãã圹ç«ã€ããã§ããã以åã®åé¡ã¯ããŠããããã¹ãçšã®ã³ã³ããŒãã³ããïŒ.specïŒã§ãããAOTãã«ãïŒããã³ããããããã€ãã®ã¢ãã¯ã³ã³ããŒãã³ãïŒã«å«ãŸããããªããšããããšã§ãç§ã¯ãããç§ã®æ圱ã«å ¥ããããããŸããïŒå€åããã¯Angularã®åŸã®ããŒãžã§ã³ã§ã©ãããããã察åŠããããšæããŸã:)
ããããç§ã®å Žåã¯ãNgModuleã§ãåç §ãããŠããªãæ°ããã³ã³ããŒãã³ããããããããã®ã§ãä»ã®ãšããããã®ååã®èŠåãèšå®ããtsconfig.jsonã§ããããé€å€ããå¿ èŠããããŸããããã¯ãåœé¢ã¯ããŸãå¿«é©ã§ã¯ãããŸããã
ããã¯æ¬åœã«ã°ãããŠããŸãã ããã€ãã®ãã€ã/ãã£ã¬ã¯ãã£ãããšã¯ã¹ããŒãããå ±æNPMã¢ãžã¥ãŒã«ãããããã¹ãŠãã€ã³ããŒãããªãéãããã®ãã ãšã©ãŒã§å€±æããŸãã ããã¯å®éã«ã¯èŠåã«å€æŽãããã¹ãã§ãããã³ã³ãã€ã«ãå£ããŠã¯ãªããŸããã
ç§ã®æèŠã§ã¯ããã¹ãŠã®ã³ã³ããŒãã³ãã¯ç¬èªã®NgModule
ã«ããå¿
èŠããããŸãã ã³ã³ããŒãã³ãããšã«å¥ã®NgModule
ãäœæããããšã¯ããã»ã©æãããšã§ã¯ãããŸããã ïŒ @angular/material
ãããããã«ïŒ
æ¬åœã«ä»®æ³çãªåé¡ã ãšæããŸãã éäžã§äœããæã£ãŠããçç±ãããããŸããã NgModule
ã§ããããã±ãŒãžã§ããã¢ããªããªãŒã®å€ã§ããããŸãã...ãããã³ãŒãã®ããã«èŠãããã®ã§ãã
ãããã£ãŠãæ°ãã@ angle / cliïŒ1.7.0+ïŒã§ã¯ãIgnoreModuleã§ãããã®åé¡ãåé¿ã§ããŸããã
ç§ã®æèŠã§ã¯ããã¹ãŠã®ã³ã³ããŒãã³ãã¯ç¬èªã®NgModuleã«ããå¿ èŠããããŸã
ãŠããããã¹ããæžãããšããããŸããïŒ ãã®ãã°ã«ããããã¹ããã«ããŒã®äœæãããåé¡ã«ãªã£ãŠããŸãã
@sarunintç§ãæåã«ãã®ãã±ãããéãããããªãšã³ã¿ãŒãã©ã€ãºãµã€ãºã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãäŸåãããã£ã¬ã¯ãã£ããšã³ã³ããŒãã³ããåŠçããããã«éåžžã«è€éãªã€ã³ããŒãã䌎ãæ°çŸã®ã¢ãžã¥ãŒã«ã«ãªããŸãã ããã«ã¯éåžžã«ç°¡åãªä¿®æ£ããããŸããã³ã³ãã€ã©ãã³ã³ããŒãã³ãã®ã¢ãžã¥ãŒã«ãèŠã€ããããªãå Žåã¯ãèŠåãã¹ããŒããŠãããªãŒã·ã§ã€ã¯ã§ãããåãé€ããŸãã
ãããéåžžã«åä»ãªæ¬åœã®çç±ã¯ããã¬ã«ãã¡ã€ã«ãæ©æµãããå±éºã«ãªããšããäºå®ã§ãã ã€ã³ããŒããäžå åããã®ã¯äŸ¿å©ã§ãããã©ã€ãã©ãªã䜿çšãããã¹ãŠã®ã¢ããªã«ãšã¯ã¹ããŒãããããã¹ãŠã®ã³ã³ããŒãã³ããå«ããããšã«ã³ãããããŠããå Žåã¯ããã§ã¯ãããŸããã
@dborisenkowork衚瀺ãããªãã£ããã©ããïŒãŸãã¯ãŠãŒã¹ã±ãŒã¹ã§æ©èœããªããã©ããïŒã¯ããããŸãããã@ rahul-sivalenka-wtcãæäŸãããœãªã¥ãŒã·ã§ã³ã¯å®å šã«æ©èœããŸãã
æè¿ãAngular 4ããAngular 5ã«ç§»åããã¢ãžã¥ãŒã«ã§å®éã«å®£èšãããŠããã³ã³ããŒãã³ãã®äžéšããã®ãšã©ãŒãã¹ããŒããŠããããšã«æ°ä»ãã人ã¯ããŸããïŒ
@ novologic-ç²åã¯ã©ã®ãããªãšã©ãŒã§ããïŒ ã¹ã¬ãããé·ãã§ããå
ã®ãšã©ãŒãåç
§ããŠããŸãã
Angular2 AOTã³ã³ãã€ã«-ãã¯ã©ã¹ã®ã¢ãžã¥ãŒã«ãå€å¥ã§ããŸããïŒ...æªäœ¿çšã®å€ãã®ã³ã³ããŒãã³ãïŒã ïŒ
@ andela-andrewmakenziã¯ãããããã ã³ã³ãã€ã«ããããšãããšãã«åºåãããã®ãšåããšã©ãŒã§ããããããæå¥ãèšã£ãŠããã³ã³ããŒãã³ãã¯ãééããªãã¢ãžã¥ãŒã«ã«å«ãŸããŠããŸãã 4.3.6ãã5.2.4ã«ç§»è¡ããŠããŸãããAngularã®ããŒãžã§ã³ãæŽæ°ããããããã®ç¹å®ã®ã³ã³ããŒãã³ãã§ãã®ãšã©ãŒãçºçããŸããã§ãããã¹ã¢ãŒã¯ãã¹ããšããŠç§»è¡ãéå§ããçŽåã«4.3.6ã§AOTã³ã³ãã€ã«ãå®è¡ããŸããã ã
@ novologic-clayã³ã³ãœãŒã«ãšã©ãŒãå ±æã§ããŸããïŒ
...æçµçãªç®æšã¯ãæªäœ¿çšã®ãã®ããã¹ãŠæé€ããtsconfig.json
ãªãã·ã§ã³"noUnusedLocals": true
ã䜿çšããããšã§ãã
@ andela-andrewmakenzi
ERROR in : Cannot determine the module for class InlineAddComponent in /Users/claygarland/CatalsytConnect/frontend/Talon/src/app/core/component/input/inline-add/inline-add.component.ts! Add InlineAddComponent to the NgModule to fix it.
ããã¯ãšã³ã¿ãŒãã©ã€ãºã¢ããªã±ãŒã·ã§ã³ã§ãããã¢ãžã¥ãŒã«ãšã€ã³ããŒãã®ã¬ã€ã€ãŒãæ°åãããŸãããããã¯å®éã«ã³ã³ããŒãã³ãã宣èšããã³ãŒãã§ãã
**COMPONENT:**
import {Component, Inject, Input} from '@angular/core';
import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material';
import {ActivatedRoute} from '@angular/router';
import {BaseForm} from '../../form/form/BaseForm';
import {FormDataService, FormDataServiceProvider} from '../../form/form/FormDataService';
import {BaseApi} from '../../../api/BaseApi';
@Component({
selector: 'inline-add',
templateUrl: './inline-add.component.html',
styleUrls: ['./inline-add.component.scss'],
providers: [
FormDataServiceProvider
]
})
export class InlineAddComponent extends BaseForm {
@Input() title = 'Entity';
@Input() formName;
protected service: BaseApi;
constructor(
protected route: ActivatedRoute,
protected formDataService: FormDataService,
public dialogRef: MatDialogRef<InlineAddComponent>,
@Inject(MAT_DIALOG_DATA) public data: {
form: string,
title: string,
service: BaseApi,
},
) {
super();
this.title = data.title;
this.formName = data.form;
this.service = data.service;
}
submit() {
super.onSubmit(res => {
this.dialogRef.close(res.data[0]);
});
}
onCancel() {
this.dialogRef.close(false);
}
}
**MODULE:**
import { NgModule } from '@angular/core';
import {SharedModule} from '../../../shared/shared.module';
import {InlineAddComponent} from './inline-add/inline-add.component';
@NgModule({
imports: [
SharedModule,
],
declarations: [
InlineAddComponent,
],
exports: [
InlineAddComponent,
],
entryComponents: [
InlineAddComponent,
]
})
export class FormInputsModule { }
ãŸãããã®ã¢ããªã±ãŒã·ã§ã³ãngserveã§å®è¡ãããšãã³ã³ããŒãã³ãã¯æ£åžžã«åäœããããšã«ã泚æããŠãã ããã
å€ãã®å®éã®ã³ã³ããŒãã³ãã®ãã¹ãã§äœ¿çšãããåœã®ã³ã³ããŒãã³ãã¯ãã¢ãžã¥ãŒã«ã«å«ããã¹ãã§ã¯ãããŸããã ãããã¯ããã¹ããããã³ã³ããŒãã³ãã®TestBedã«å«ãŸããŠããŸãã
ãã®ãšã©ãŒã¯ã°ãããŠããŸãã 1幎ãããã®ãŸãŸè§£æ±ºããŠãã ããã
ããšã¯ã¹ããŒãããåé€ããŠãtsããã«ãã«ç§»åããªãããã«ããŸãã
@ tony-kaplan tsconfigã«noUnusedLocalsããªãå ŽåããŸãã¯ãã¹ãã±ãŒã¹ãªã©ã§ã³ãŒãã䜿çšããå Žåã¯ããããè¡ãããšã¯ã§ããŸããã
ç§ã®ç¥....æ¬åœã«ã³ã¢ããŒã ã®èª°ãããã«é©ãã解決çãèŠã€ããããªãã£ãã®ã§ããïŒ
ä»ã®ãšããexclude
ãªãã·ã§ã³ã䜿çšããŠããŸãããããã§ãäžæçãªè§£æ±ºçã§ãã ãã¹ãŠã®ç¶æ³ã§æ©èœãããã®ãèããããšã¯ã§ããŸãã...ããããç§ã¯æ¬åœã«ãããå¿
èŠã§ã...
@gabrielalanç°¡åãªè§£æ±ºçã¯ããã®ãšã©ãŒãèŠåã«å€ããããšã§ãã ããè¯ã解決çã¯ããããèŠåãŸãã¯ãšã©ãŒãšããŠæ±ãããšãã§ãããã©ã°ãè¿œå ããããšã§ãã ããã¯è§£æ±ºçã®æ¬ åŠã§ã¯ãªããå®éã«ãããã®ãããããå®è£ ããããšã®æ¬ åŠã§ãã
ããå°å¹ŽïŒ ãšã³ã¿ãŒãã©ã€ãºãã¬ãŒã ã¯ãŒã¯ã«ã€ããŠã¯ããã ãã§ã...
@ atom-morganã©ã®åé¿çã«ã€ããŠè©±ããŠããã®ã§ããïŒ
@netlanderãã
æ¬åœã«ããã¯ã©ã¹DaterangepickerDirectiveã®ã¢ãžã¥ãŒã«ãå€å¥ã§ããŸããããšã©ãŒã«ã€ããŠã¯äœãã§ããŸãããïŒ
誰ããç§ãå©ããŠãããŸããïŒ ãã®ã¡ã¬ãŸãŒãã®æçš¿ã®åŸïŒ
ãã®ãã£ã¬ã¯ãã£ãã«æ°ããé€å€ãtsconfig.app.jsonã«è¿œå ããããšã«åæããŸããïŒ ãã®åé¡ãªãã«--aotparamã䜿çšããŠã³ã³ãã€ã«ããã«ã¯ã©ãããã°ããã§ããïŒ
ç§ã®ãŠãŒã¹ã±ãŒã¹https://github.com/angular/angular/issues/23475
ããªããŒã¿ãŒã©ã€ãã©ãªãäœæããŠããŸãããããªããŒã¿ãŒãã£ã¬ã¯ãã£ãããšã«ã¢ãžã¥ãŒã«ãäœæããããããŸãããå¿
èŠãªã®ã¯ãããªããŒã¿ãŒãã£ã¬ã¯ãã£ããnpmããã±ãŒãžã«ãã³ãã«ããŠããŠãŒã¶ãŒãå¿
èŠãªããªããŒã¿ãŒã®ã¿ãNgModuleã«ã€ã³ã¹ããŒã«ããã³ã€ã³ããŒãã§ããããã«ããããšã ãã§ãã ãŸãããã¹ãŠã®ããªããŒã¿ãŒã«å¯ŸããŠ1ã€ã®ã¢ãžã¥ãŒã«ãäœæããå¿
èŠã¯ãããŸããããããã¯ãã¹ãŠããµã€ãºã®å€§ããªç¡é§ã§ããæçµãã³ãã«ã«ãã³ãã«ãããããã§ãã
åé¡ãä¿®æ£ããããã®PRãäœæã§ããŠããããã§ãã
@anjmaoããã¯ç§ãæåã«ãããéããçç±ãšéåžžã«ãã䌌ãŠããŸãã å°ããªã©ã€ãã©ãªã®åé¿çãšããŠããã¬ã«ïŒindex.tsïŒãã¡ã€ã«ã䜿çšããªãå Žåã¯ãã®ãšã©ãŒãçºçããªãããšãããããŸããã ã€ã³ããã¯ã¹ãã1ã€ã®ã³ã³ããŒãã³ã/ãã£ã¬ã¯ãã£ããã€ã³ããŒããããšãã€ã³ããã¯ã¹ãã¡ã€ã«ã®ä»ã®ãã¹ãŠã®ãšã¯ã¹ããŒãçšã®ã¢ãžã¥ãŒã«ãèŠã€ããããšããããã§ãã
ãã¬ã«ãã¡ã€ã«ã¯éåžžã«äŸ¿å©ãªã®ã§ãæããã«ããã¯èŠåã§ããã¯ãã§ãã ãã ãããŠãŒã¹ã±ãŒã¹ããã®ä¿®æ£ããã1å¹ŽåŸ ã€ããšãã§ããªãå Žåã¯ããã®ããã«åé¿ã§ããå¯èœæ§ããããŸãã
ã³ã³ããŒãã³ã/ãã£ã¬ã¯ãã£ã/ãã€ãã®å ±æã©ã€ãã©ãªã«äœ¿çšããŠããåé¿çïŒãã¹ãŠã®ã¯ã©ã¹å®£èšãåç §ããåçŽãªãããŒã¢ãžã¥ãŒã«ãäœæããŸãã ãã®ã¢ãžã¥ãŒã«ãå®éã®ã¢ããªã§äœ¿çšããå¿ èŠã¯ãããŸããããã£ã¹ã¯äžã«ååšããå¿ èŠããããŸãã å ïŒ
import { NgModule } from '@angular/core';
@NgModule({
imports: [],
declarations: [
MyComponent,
MyPipe,
MyDirective,
...
],
})
export class DummyModule {
}
ãã®åé¡ããŸã ä¿®æ£ããŠããªãçç±ã¯ãããŸããïŒ
ãèŠåã«ããããœãªã¥ãŒã·ã§ã³ã¯é©åã§ã¯ãããŸãããïŒ ã³ã¢ããŒã ã®ã¡ã³ããŒã¯ããã«ã€ããŠã³ã¡ã³ãã§ããŸããïŒ
ç§ã®å ŽåãNG 5ãCLIãAOTã§åé¡ãããŸããã ããããNG 6ã«ã¢ããã°ã¬ãŒãããåŸãæªäœ¿çšã®ã³ã³ããŒãã³ãã«ã€ããŠãåæ§ã®ãšã©ãŒãçºçããŸãã å®éã«ã¯ãã³ã³ããŒãã³ãã¯ä»ã®ã³ã³ããŒãã³ãã«æ³šå ¥ããããµãŒãã¹ãéããŠäœ¿çšãããŸãã ç§ã¯å€ãã®åæ§ã®ã³ã³ããŒãã³ããåãæ¹æ³ã§æ§ç¯ããŠäœ¿çšããŠããŸãã ãã ããææ°ã®NG CLI6.0ããã³6.0.1ãžã®ã¢ããã°ã¬ãŒãã§åé¡ãçºçããã®ã¯1ã€ã ãã§ãã
ãããŠãåèæç®ã®1ã€ã«ãééã£ãã±ãŒã¹ã®ãã¡ã€ã«åç
§ãããããšãå€æããŸããã åããã£ã¬ã¯ããªã«ãããã¹ãŠã®ã³ã³ããŒãã³ãããšã¯ã¹ããŒãããããã®index.tsããããŸãã ç§ã¯æã£ãŠããexport * from './dateTimePicker.component'
ããããã£ãã¯ãã ã£ãéïŒ
export * from './ datetimePicker.component';
ã©ããããNG CLI 6ã¯ãWindowsã§ãã±ãŒã·ã³ã°ã«å¯ŸããŠããå¶éãããŠããŸãããNG CLI1.xã¯å°ããªã©ãã¯ã¹ããŠããŸãã
æããã«ããã®ãããªå¶éã¯é©åã§æ£ãããããåãã³ãŒãããŒã¹ãããã©ã«ãã§å€§æåãšå°æåãåºå¥ããLinuxã§é©åã«æ©èœããå¯èœæ§ããããŸãã
ããã®å¥ã®ãŠãŒã¹ã±ãŒã¹ïŒ
Typescriptã䜿çšãããšã$ïŒ$ tsconfig.json
ã®paths
å€æ°ã䜿çšããŠè€æ°ã®è§£æ±ºãã¹ãèšå®ã§ããŸãã å
ïŒ
{
...
"paths": {
"~src/*": ["src/*", "src-gen/*"]
}
}
次ã®ãããªãã®ãã€ã³ããŒãã§ããããã«ããŸãã
import { NgModule } from "@angular/core";
import { ExampleComponent } from "~src/example.component";
@NgModule({
declarations: [
ExampleComponent
],
})
export class ExampleModule {}
src-gen
å
ã«ã³ã³ããŒãã³ããçæããŠããŠãéçºè
ãsrc
ãã©ã«ããŒå
ã«å¥ã®ã³ã³ããŒãã³ããäœæããããšã§ããªãŒããŒã©ã€ããã§ããå Žåã src-gen
å
ã®ïŒçŸåšã¯äœ¿çšãããŠããªãïŒã³ã³ããŒãã³ãã§ãåããšã©ãŒãçºçãå§ããŸãã
å¥ã®æœåšçãªãŠãŒã¹ã±ãŒã¹ïŒ
ç°å¢åºæã®ã³ã³ããŒãã³ãã ç§ã¯ããããçç£ã®ããã«å¥ãåããŸãã
const environmentComponents = production ? [] : [
DevOnlyComponent,
];
@NgModule({
declarations: [
...environmentComponents,
],
})
export class ExampleModule {
}
ç§ã¯ä»ã®ãã¹ãŠãç°å¢åºæã®ã³ã³ããŒãã³ãã§åäœãããããšãã§ããŸãããããããç§ãæ¢ããŠããŸãã ðª
@tiagodws ïŒå ã®ã³ã³ããŒãã³ãã®æ¡åŒµãå«ãïŒã§èª¬æãããŠããã·ããªãªã«éåžžã«ãã䌌ããã«ãã®ã«ã¹ã¿ãã€ãºïŒã³ã³ããŒãã³ããããŸããŸãªAngular CLIãããžã§ã¯ãã«äº€æãããïŒã®ã¡ã«ããºã ãå®è£ ãããšãã«ããã®åé¡ã«çŽé¢ããŠããŸãã
ãã®åé¡ã«é¢ããã³ã¢ããŒã ã®æŽæ°/æèŠã¯ãããŸããïŒ
ãã®å·ãéããŠãã1幎以äžãç§ã®æ°ããã¢ãããŒãã¯ãã¬ã«ãã¡ã€ã«ã®äœ¿çšãæå°éã«æããããšã§ãã ã©ãã§ãã€ã³ããŒãã§~components/button/component
ã®ãããªTSãã¹ã䜿çšããå Žåãæªäœ¿çšã®ã€ã³ããŒãã¯ç¡èŠãããŸãã ãã®æªäœ¿çšã®ã³ã³ããŒãã³ãããã¬ã«ãã¡ã€ã«ã§åç
§ãããŠããå Žåãã¹ããŒãããŸãã
ã©ã€ãã©ãªã®ãããã¬ãã«ããã€ã³ããŒãããã ãã§ãªããããé·ããã¹ã§ãã¹ãŠã®ã©ã€ãã©ãªã³ã³ããŒãã³ãã«ã¢ã¯ã»ã¹ããå¿ èŠããããããåå©çšå¯èœãªã©ã€ãã©ãªã«ãšã£ãŠã¯ãŸã çŽ æŽãããããšã§ã¯ãããŸããã ãªããããããªãããã¯åãªãèŠåã§ã¯ãªãã®ã§ããïŒ
ããã¯ãã¢ãžã¥ãŒã«ã«ç¹ã«å«ãŸããŠããªãã³ãŒããæçµãã³ãã«ããé€å€ãããããªãŒã·ã§ã€ã¯ã«ãã£ãŠïŒãŸãã¯å°ãªããšãé¢é£ããŠïŒå©ããããå¯èœæ§ãããããã§ãã
é€å€ãªãã·ã§ã³ã¯ãã¢ãã¯ãã€ãã«ã¯é©çšãããŸããã
@Pipe({ name: 'translate' })
export class MockTranslatePipe implements PipeTransform {
transform(value: string): string {
//Do stuff here, if you want
return value;
}
}
ç§ã®tsconfig.app.jsonã¯ãã®ãã¡ã€ã«ãé€å€ããŸããïŒ
"exclude": [
"test.ts",
"**/*.mock.ts",
"**/*.spec.ts"
]
ãã ããng-xi18n --i18nFormat = xlf2 --outFile =ã/ assets / i18n / messages.xlfãå®è¡ãããšã次ã®ãããªã¡ãã»ãŒãžã衚瀺ãããŸãã
src / test / translate.service.mock.tsã®ã¯ã©ã¹MockTranslatePipeã®ã¢ãžã¥ãŒã«ãå€å¥ã§ããŸããïŒ MockTranslatePipeãNgModuleã«è¿œå ããŠä¿®æ£ããŸãã
ç§ã®åé¡ã¯ãç¬ãã³ããŒããŠè²Œãä»ããããšã§ã2ã€ã®ç°ãªãã³ã³ããŒãã³ãã«ã¯ã©ã¹ã®ååãä»ããŠããããšã§ããã åŸã§æ°ã«ããªããšããåãééãè¯ãç·Žç¿ã¯å®ç§ãªäººã«ãªããŸãïŒ ããã...
眲åïŒäžæ¬è¡ïŒv
@yuezhizizhangãšåæ§ã«ãtsconfig.app.json exclude
ãã¹ã«ã¢ãã¯ã®ã°ãããè¿œå ããåŸã§ãããã®åé¡ãçºçããŸãã
æåã®ãã±ããããã»ãŒ2幎çµã£ãŠããããã解決ãããŠããªãããšã«è ¹ãç«ãŠãŠããŸãã ããã¯ããã«ããå£ãäžè¬çãªãŠãŒã¹ã±ãŒã¹ã§ãã ãã¹ããäœæããå Žåãéçºè ã¯ããã€ãããµãŒãã¹ãªã©ã®ã¢ãã¯ãäœæããã®ãçæ³çã§ãã ãããéžæãããšããã«ããäžæããŸãã ããã§ãªãå Žåãã¹ããã¯ãã¡ã€ã«ã¯å®éã®ã³ã³ããŒãã³ã/ãã€ããªã©ãåç §ãããããéåžžã«ç·å¯ã«çµåããããã¹ãã«ã€ãªãããŸãã
AngularããŒã ã®èª°ãããããåé¿ããæ¹æ³ãææ¡ã§ããŸããïŒ ã¢ãã¯çšã®ãã£ãããªãŒã«ãããŒã¢ãžã¥ãŒã«ãäœæããããšãæ¬åœã«å¯äžã®ãªãã·ã§ã³ã§ããïŒ ããã¯ããã¹ããã©ã¯ãã£ã¹ãšããŠåãå ¥ããã¹ããã®ã§ã¯ãªããäžååãªããã¯ã§ãã
åé¡ã¯è§£æ±ºããŸããã ãŸãããã«ããã¹ãããããããã¡ã€ã«ïŒæœè±¡ã¯ã©ââã¹ïŒãtsconfig.app.json
ã®é€å€ã»ã¯ã·ã§ã³ã«è¿œå ããŸããããããã§ã次ã®ããã«ãªããŸãã
... / map-elements / map-element-base.component.tsã®ã¯ã©ã¹MapElementBaseComponentã®ã¢ãžã¥ãŒã«ãå€å¥ã§ããŸããïŒ MapElementBaseComponentãNgModuleã«è¿œå ããŠãä¿®æ£ããŸãã
ã€ã³ããŒããå確èªããåŸããã®åé¡ãåãé€ããŸãã
ÑÑã14æ¥ã 2018幎ã15ïŒ13 Daniel [email protected] ïŒ
åé¡ã¯è§£æ±ºããŸããã ãã«ããã¹ãããããããã¡ã€ã«ãè¿œå ããŸãã
ïŒæœè±¡ã¯ã©ââã¹ïŒtsconfig.app.jsonãšIã®é€å€ã»ã¯ã·ã§ã³ã«
ãŸã ååŸïŒã®ã¯ã©ã¹MapElementBaseComponentã®ã¢ãžã¥ãŒã«ãå€å¥ã§ããŸãã
... / map-elements / map-element-base.component.tsïŒ MapElementBaseComponentãè¿œå ããŸã
ãããä¿®æ£ããããã«NgModuleã«ãâ
ã³ã¡ã³ãããã®ã§ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/angular/angular/issues/13590#issuecomment-438641324 ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AQb6kpWdkakUF8JVvea8Hy42tAnTKTuzks5uvAjvgaJpZM4LSAwS
ã
TypeScript strictãAngularã€ã³ããŒããAOTã³ã³ãã€ã«ã§ãã©ã€ãã©ãªããã³ã³ããŒãã³ãã䜿çšããããã®ãšã©ãŒãå®è¡ããå Žå...æªäœ¿çšã®ã³ã³ããŒãã³ã/ã¢ãžã¥ãŒã«ã«æå³ããªãããšã確èªããŠãã ãã...
æªäœ¿çšã®ã¢ãžã¥ãŒã«ãšã³ã³ããŒãã³ããããã©ã€ãã©ãªãã©ã«ããåé€ããããšã§ãã¢ããªã±ãŒã·ã§ã³ã¯å³å¯ã«èµ·åããŸã-ããªãããŸããããŸã-ãããããã®ãã©ã«ããæåã§åé€ããŠãæå³ããããŸãã
ãã®ãšã©ãŒã¯çµ¶å¯Ÿã«ã°ãããŠããŸãã 次ã®ããã«ããªããžã§ã¯ãå ã®ã³ã³ããŒãã³ããæå®ããã¢ãžã¥ãŒã«ããããŸããã
const landingComponents = {
'landing-root': LandingComponent,
'get-notified': GetNotifiedComponent,
'typed-component': TypedComponent,
'sticky-bar': StickyBarComponent,
};
次ã«ãã¢ãžã¥ãŒã«ã«declarations: Object.values(landingComponents)
ã entryComponents: Object.values(landingComponents)
ããã£ãŒãããããšããŸããã
äœãæšæž¬ããŸãã... AOTã³ã³ãã€ã©ã¯é åã«ãªã¹ããããã³ã³ããŒãã³ãã確èªããå¿ èŠããããŸã...ããã§ãªãå Žåãä»ã®æ¹æ³ã§æž¡ããšããã®æããããã¯ã©ã¹ã®ã¢ãžã¥ãŒã«ãå€å¥ã§ããŸãããã衚瀺ãããŸãã
ç§ãAngularãæããŠããã®ãšåãããã«ãAOTã³ã³ãã€ã©ãŒã¯éæ³ã®åªæã®æ··æ²ãšãââãã¹ãŒãã®ããã§ãã
äœåãèšãããŠããŸããã解決çã¯ã¢ãžã¥ãŒã«ããšã«1ã€ã®ã³ã³ããŒãã³ãã§ãããPRããAngularã«æ°ä»ãããã©ããã¯ããããŸããããããã¯æè¿ããŒãžããããã®ã§ããããã®ãããã¯ã«é¢å¿ãããå¯èœæ§ããããŸãïŒ https ïŒ//github.com/
ãã®å·ã¯ä»æ¥2æ³ã«ãªããŸãð
ããã§ãããªããããåãªãèŠåã§ã¯ãªãã®ãã«ã€ããŠã®ã³ã¢ããŒã ããã®èšèãããããŸããã
@tiagodws lolãããæçš¿ããã®ãã©ããããåŸ ã£ãŠããŸããïŒ ãªãã€ã³ããŒãèšå®ããŸãããïŒ
åèãŸã§ã«
ç§ã®åé¡ã¯https://github.com/angular/angular/issues/13590#issuecomment-389113560ãšåãã§ãã
AOTã¢ãŒãã§ã¯ãã€ã³ããŒãã§å€§æåãšå°æåãåºå¥ãããããã§ã
@peterdeme ... JavaScriptã§ã¯å€§æåãšå°æåãåºå¥ãããŸãïŒæååãšããŠã®ãã¹ã¯åãã§ã... = LinuxããŒã¹ã§ãããWindowsã§ã¯ãããŸããïŒã
ããã¿ããªãé
ãã°ããªãã2幎ã®åé¡ã®å¹Žéœ¢ã®ãç¥ãã®ããã«æ»ã£ãŠããã $ïŒ tsconfig.json
ã®include
$ã»ã¯ã·ã§ã³ãexclude
ã»ã¯ã·ã§ã³ãªã©ã人ã
ã®èããããåå ã«ã€ããŠã¯å€ãã®ã¯ãã¹ããŒã¯ãããã®ã§ãæ ¹æ¬çãªåé¡ãäœã§ããããæããã«ããããšæããŸãããã®ã¹ã¬ããã®ããã«ã
åå©çšå¯èœãªã³ã³ããŒãã³ãã®ã©ã€ãã©ãªãäœæããã€ã³ããŒãã容æã«ããããã«ãã¬ã«ãã¡ã€ã«ïŒ index.ts
ïŒãè¿œå ãããšãAngularã³ã³ãã€ã©ã¯ãããã®ããããã䜿çšãããšå£ããŸãã ããã¯ããã®ãã¬ã«ãã¡ã€ã«ïŒããšãã°ã @shared/components
ïŒããäœããã€ã³ããŒããããšããã«ããã¹ãŠã®åäžã³ã³ããŒãã³ãã®ã¢ãžã¥ãŒã«ãèŠã€ããããšããããã§ãã å¿
èŠãªç¹å®ã®ã³ã³ããŒãã³ãïŒããšãã°ã import { SharedToastComponent } from '@shared/components';
ïŒãæå®ããå Žåã§ããã³ã³ãã€ã©ã¯ãšã¯ã¹ããŒãããããã¹ãŠã®ã³ã³ããŒãã³ãã®ã¢ãžã¥ãŒã«ãæ€çŽ¢ããæ¬ èœããŠããã³ã³ããŒãã³ãã«é¢ãããšã©ãŒïŒèŠåã§ã¯ãªãïŒãã¹ããŒããŸãã
æããã«ãåé¿çããããŸãã
ExtrasModule
ã䜿çšããã¢ãžã¥ãŒã«ã¯ã©ãã«ã䜿çšããªãã§ãã ããã ããã¯ããã¹ãã«ã®ã¿å¿
èŠãªã³ã³ããŒãã³ããæã£ãŠãã人ã«ã¯ããŸãæ©èœããŸãããã³ã³ããŒãã³ãã©ã€ãã©ãªãããã«ããããšããŠãã人ã«ã¯ããŸãããŸããããŸããããã ãããããã®åé¿çã®ããããã䜿çšãããšãããªãŒã·ã§ã€ã¯åŸã«ãŸã£ããåãåºåã³ãŒããçæããããããä»ã®ã³ã³ããŒãã³ãã䜿çšæžã¿ã¢ãžã¥ãŒã«ã«å«ããå¿ èŠããªãããšã¯æããã§ãã ãã®2幎åã®åé¡ã§ç§ãæ±ããŠããã®ã¯ããã®ãšã©ãŒãããé©åãªèŠåã«å€ããããšã ãã§ãã ç¶è¡ãèš±å¯ãããå Žåã§ãã³ã³ãã€ã«ã¯æåãããããçã«ããªã£ãŠããŸãã
2019幎ã«ãAngularããŒã ããã®éåžžã«å€ããéåžžã«åä»ãªåé¡ã«ã€ããŠäœããããããšãæåŸ ããŠããŸãã ð€
@ smilemadude66 ...å®éã®libã¢ãžã¥ãŒã«ãäœæãã tsconfig.json
ãä»ããŠAngularã¢ããªã«è¿œå ããæ¹æ³ã«ã€ããŠã¯èšåããŠããŸãã... "paths": {"ng-demo": ["./packages/ng-demo/src/index.ts"]}
ã®ããã«ã import { DemoModule } from 'ng-demo';
ã®ããã«ã€ã³ããŒããä»ããŠäœ¿çšããŸã
ãã¹ãŠã®ã³ã³ããŒãã³ãã¹ã¿ãã§ãšã©ãŒãçºçããã®ã¯ãæãåä»ãªããšã§ãã 誰ããä»æ§ããã¹ã/äœæããŠããŸããïŒ ãããã£ãŠãã³ã³ããŒãã³ãã¹ã¿ããšã©ãŒã¯ãã¹ãŠã®äººã«åœ±é¿ãäžããã¯ãã§ãã ãã¬ã«ã®åé¡ãããã»ã©ç ©ããããªããšèšã£ãŠããã®ã§ã¯ãããŸããã 誰ãããã¬ã«ããã£ãŠããããã§ã¯ãªããšèšã£ãŠããã ãã§ãã ãããã誰ããã¹ããã¯ãå®è¡ããå¿ èŠããããŸãã ãããã£ãŠãä»æ§ã®åé¡ã¯ãã³ã¢ããŒã ããããä¿®æ£ããæ倧ã®åæ©ãšãªãã¯ãã§ãã çŸåšããFrequency Lowããšããã©ãã«ãä»ããŠããŸãããåäœãã¹ããè¡ã人ã¯èª°ã§ããã®åé¡ã«ééããããããFrequencyHighãã«ããå¿ èŠããããŸãã
ããã¯AOTã§ãäžè²«ããŠããŸããã Angular CLIã¯ãserveïŒããã©ã«ãã§ã¯AOTã䜿çšïŒã§å®è¡ãããšãšã©ãŒãçºçãããŸããããbuildã§å®è¡ãããšãšã©ãŒãçºçãããŸãã
ããã¯AngularCLIãªããžããªã§ã¯ãªãããšã¯ç解ããŠããŸããããããåãå·»ãåäœã¯ç¢ºãã«å¥åŠã§ãã
ã¢ãã¯ã¢ãžã¥ãŒã«ãäœæããåé¿çããã£ãŠããUIãŠããããã¹ãã©ã€ã¿ãŒãã¢ãã¯ã¢ãžã¥ãŒã«ã«åäžã®ã¢ãã¯ã³ã³ããŒãã³ããè¿œå ããã®ãå¿ãããšããngãã«ããã倱æããããã«ãªããŸããã
äžèšã¯ã UIãŠããããã¹ããçŸåšCI / CDãããã€ã¡ã³ããã€ãã©ã€ã³ã®ãªã¹ã¯èŠçŽ ã§ããããšãæå³ããŸãã
AngularãŠããããã¹ã¿ãŒã¯ã1ã€ã®äºçŽ°ãªçç¥ã§å±éãã«ãå šäœãå£ãããšãã§ããããšããé£ç©é£éã®äžäœã®äººã ã«æ¬åœã«èª¬æããå¿ èŠããããŸããïŒ ãããã Angularéçºè ã管çãã次ã®ãããžã§ã¯ãã«äœ¿çšãããã¬ãŒã ã¯ãŒã¯ã決å®ãã人ã¯ããã®çš®ã®ããšã«ã€ããŠäžæè°ã«æãã¹ãã§ã¯ãããŸããã
äžæçãªãã®ãšããŠïŒãngbuildãã«è¡šç€ºããããšã©ãŒããã¹ãäœæè ã«ãšã£ãŠããæçãªãã®ã«ããªãã®ã¯ãªãã§ãããã€ãŸãããããããã¹ãã§äœ¿çšãããã¢ãã¯ã³ã³ããŒãã³ãã§ããå ŽåïŒãã®äžã®ã¢ãã¯ã¢ãžã¥ãŒã«ã«è¿œå ããããšããå¹æã«ããã¹ããè¿œå ããŸãã ïŒãã®URLïŒã«ãããã¡ã€ã«ã
ããªãã®å¹³åçãªãã¬ã³ããªãŒãªAngularéçºè ã®åäœãã¹ãã¯ã©ã®ããã«ããŠããã«å°éããŸãããïŒ
aïŒç§èŠã§ã¯ããã¹ãŠã®.specãã¡ã€ã«ã䜿çšããã¢ãã¯ã³ã³ããŒãã³ãããµãŒãã¹ãªã©ãé 眮ããããã®ããã«ããŒããã¡ã€ã«ãäœæããã®ã¯DRYã³ãŒãã®æ £äŸã§ãã ãã ãããã®æ¹æ³ã§ã¯ããã¹ã¿ãŒããã®ãã°ã·ããªãªã«çªå ¥ããŸãã
bïŒãã¹ãŠã®.specãã¡ã€ã«ã¯ãå®éã®ãã¹ãã³ãŒããšã¯é¢ä¿ã®ãªããã¢ãã¯ã¢ãžã¥ãŒã«ããå¿ èŠãšããã«ããã®ããã«ããŒããã¡ã€ã«ãã€ã³ããŒãã§ããŸãã ã¢ãã¯ã³ã³ããŒãã³ãã¯ãä»æ§ã®ãã¹ãç°å¢ã§ãŸã£ãã圹å²ãæããªãã¢ãã¯ã¢ãžã¥ãŒã«ã®ã¡ã³ããŒã·ããããªããŠãããã®ãŸãŸäœ¿çšã§ããŸãã
確ãã«åé¿çã¯ç°¡åã§ã...ããããã°ãŒã°ã«æ€çŽ¢ã§ãã®ãã°ãèŠã€ããã¹ã¬ãããèªãã§æ¶åãã圹ç«ã€åé¿çã¯ããã§ã¯ãããŸããã§ããã
ããããïŒãšãããïŒã¢ãã¯ã³ã³ããŒãã³ããå«ããã«ããŒãã¡ã€ã«ã®æåŸã«è¿œå ããŸãã
/*
mock components
!! Each mock component added to this file *must* be added to the "MockTestModule", see below !!
*/
@Component({
selector: 'app-mock-component',
template: '<span>mock widget</span>'
})
export class MockComponent {}
/*
This is an unused module to resolve the ng build error:
'ERROR in : Cannot determine the module for class MockComponent
in C:/code/myRepo/src/assets/test/test-resources.ts!
Add MockComponent to the NgModule to fix it.'
Reference: https://github.com/angular/issues/13590
Each mock component added to this file *must* be added to the "MockTestModule"
*/
@NgModule({
declarations: [ MockComponent ],
})
export class MockTestModule {}
äžèšã®ãã¡ã€ã«ã¯å®éã«ã¯éåžžã«å€§ããããšã«æ³šæããŠãã ãã...ãMockTestModuleãã¯ãã«ããŒãã¡ã€ã«ã®æåŸã«åã蟌ãŸããŠããŸã...
...åŒã³åºããã€ã³ã¿ãŒã»ããããã³ã³ãœãŒã«ã¡ãã»ãŒãžãããUIãŠããããã¹ã¿ãŒãã¢ãã¯ã³ã³ããŒãã³ããã¢ãã¯ã¢ãžã¥ãŒã«ã«è¿œå ããŸãããïŒããæ¿å ¥ãããngbuildãã®package.jsonãšã³ããªãäœæããå¿ èŠããªãããšãé¡ã£ãŠããŸãã ãããžã
ãããç§ã«ãšã£ãŠåé¡ã解決ãããã®ã§ãã ç§ã®æ§é ã¯æ¬¡ã®ãšããã§ãã
âââ icons.module.ts
âââ index.ts
âââ icon
â  âââ icon.component.html
â  âââ icon.component.ts
â  âââ icon.module.ts
âââ icon-indicator
âââ icon-indicator.component.html
âââ icon-indicator.component.ts
âââ icon-indicator.module.ts
icons.module.ts
ã§ç§ã¯æã£ãŠããŸããïŒ
import { IconComponent } from './icon/icon.component';
import { IconIndicatorComponent } from './icon-indicator/icon-indicator.component';
export { IconIndicatorComponent, IconComponent };
@NgModule({
/* this was all fine */
})
export class IconsModule {}
index.ts
ã«ã¯æ¬¡ã®ãã®ããããŸããã
export * from './icons.module';
åé¡ã¯ãã³ã³ãã€ã©ã察å¿ããã³ã³ããŒãã³ãã«ééããåã«ã¢ã€ã³ã³ãšã¢ã€ã³ã³ã€ã³ãžã±ãŒã¿ã¢ãžã¥ãŒã«ã解æããªãã£ãããã Cannot determine the module for class
ãšã©ãŒãã¹ããŒããããšã ãšæããŸãã ãã®ãããžã§ã¯ãã¯ng5ã§ããng7ãããžã§ã¯ãã§äœ¿çšããå Žåã«ã®ã¿ãšã©ãŒãçºçããŸããã
解決çã¯ããšã¯ã¹ããŒãã1ã¬ãã«äžã«ç§»åããããšã§ãã ããã§ã icons.module.ts
ã®ãšã¯ã¹ããŒãã¹ããŒãã¡ã³ããåé€ããŠã次ã®å Žæã«ç§»åããŸããã
icon.module.ts:
export { IconComponent };
...
icon-indicator.module.ts:
export { IconIndicatorComponent };
...
調æŽæžã¿index.ts
ïŒ
export * from './icons.module';
export * from './icon/icon.module';
export * from './icon-indicator/icon-indicator.module';
ããã誰ããå©ããããšãé¡ã£ãŠããŸãã
æ°ãããã¿ã¬ã³ãã©ãŒã¯AOTã®åé¡ãããªã解決ãããšæããŸãã ãã«ãªã¯ãšã¹ããšåé¡ãããããããã«ãAngularããŒã ã¯ãã¿ã«çŠç¹ãåãããŠãããããAngular6ã§ãã®åé¡ã«ã€ããŠäœããããæå³ã¯ãããŸããã
æ°ãããã¿ã¬ã³ãã©ãŒã¯AOTã®åé¡ãããªã解決ãããšæããŸãã
ç§ã¯ãã¹ãŠã®åé¡ã§ãããèãã®ã倧奜ãã§ãã
ç§ã¯angular7.2.0ãšangular-cli7.3.0ã§ããã®åé¡ãæ±ããŠããŸã
ERROR in : Cannot determine the module for class ModalMockComponent in /Users/user/repos/angular-skeleton/src/app/shared/modal/modal.component.mock.ts! Add ModalMockComponent to the NgModule to fix it.
Cannot determine the module for class TranslatePipeMock in /Users/user/repos/angular-skeleton/src/app/shared/pipes/translate.pipe.mock.ts! Add TranslatePipeMock to the NgModule to fix it.
ããšãã°ã Shared Module
TranslatePipe
ãšTranslatePipeMock
ããããŸãã TranslatePipeã¯ã¢ãžã¥ãŒã«ã«å«ãŸããŠããŸãããã¢ãã¯ãã€ãã¯å«ãŸããŠããŸããã
translate.pipe.mock.ts
ã¯åäœãã¹ãçšãªã®ã§ããã®ãã¡ã€ã«ãååäœãã¹ãã«ã€ã³ããŒãã§ããŸãã
ãããä»ãç§ã®ãã«ãã¯å€±æããŸãng build --prod
ãããã©ã®ããã«ä¿®æ£ããŸããïŒ
Atmç§ã¯ããã解決ããåé¿çãæã£ãŠããŸã
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"types": []
},
"exclude": [
"test.ts",
"**/*.spec.ts",
"**/*.mock.ts"
]
}
ã³ã¡ã³ãã®ç°¡åãªãŠã©ãŒã¯ã¹ã«ãŒããããã®åé¡ã®çŸåšã®ã¹ããŒã¿ã¹ãå€æããã®ã¯å°é£ã§ãã ç§ã¯ãããåé¡ã§ããããšã«åæããŸãïŒè²§åŒ±ãªãã¶ã€ã³ïŒã ãããä¿®æ£ããèšç»ã¯äœã§ããïŒ ç°¡åã§ãããé£ããã§ããïŒ
@rrmayerãã®åé¡ã®ã¹ããŒã¿ã¹ã¯ãã»ãšãã©ãã¹ãŠã®ãçŸåšã®ãåé¡ãšåæ§ã«ãããã¿ãåŸ ã€ãã ãã§ããå¯èœæ§ãé«ãã§ãã
ãããããšã©ãŒããããèŠåãã«å€æŽãããã®ã§ããããžã§ã¯ãã¯å®éã«ã³ã³ãã€ã«ãããŸã...ããã¯ãšãŠãé£ããã§ããïŒ
@ Terrafire123 ...ããšãã°ããã¹ãããã«ãããŒã«ãšã¯å€ãã®é¢ä¿ãããå¯èœæ§ããããŸããããã¯ãå®éã«ã¯ãã®ã±ãŒã¹ããšã©ãŒã«ã€ãªãããšããäºå®ã«åºã¥ããŠãããããèŠåãžã®å€æŽã¯é倧ãªåé¡ã«ãªãå¯èœæ§ããããŸãã
çŸåšã®ã³ã³ãã€ã©ã§ä¿®æ£ããããšã¯æããŸããïŒD
å°ãªããšãããšã©ãŒãŸãã¯èŠåã®ããããã衚瀺ãããªãã·ã§ã³ãå¿ èŠã§ãã ã³ã³ããŒãã³ããæå³çã«ã¢ãžã¥ãŒã«ã®äžéšã§ã¯ãªãããã«ãã«ããå£ããããšã¯ãããªãåä»ã§ãã
æªäœ¿çšã®ã€ã³ããŒãã¯ããã®ãšã©ãŒãåŒãèµ·ããå¯èœæ§ããããŸãã
import { UnusedImportComponent } from "./used-somewhere-else-or-not.component";
ã¯ã©ã¹ã®æšªã«ãããexportãããŒã¯ãŒãã¯ã @ Componentãã³ã¬ãŒã¿ãé©çšãããŠããã¯ã©ã¹ãäœããã®ã¢ãžã¥ãŒã«ã«å«ããå¿ èŠãããããšãäœããã®æ¹æ³ã§æ±ºå®ããŠããããã§ãã ã³ã³ããŒãã³ãã®ã¯ã©ã¹ãã€ã³ããŒãããŠãã¹ãã§çŽæ¥å®£èšããããCoreMocksModuleãªã©ã§å®£èšããŠããã¢ãžã¥ãŒã«ãã€ã³ããŒããããã«ãããããããã¹ãŠãéèŠã§ã¯ãããŸããã
ãã ããåé¿çããããŸãã ã¹ã¿ãã³ã³ããŒãã³ãã次ã®ããã«å®£èšãããŠãããšããŸãããã
@Component({
selector: 'app-user-stub-component',
template: ''
})
export class UserStubComponent {}
'export'ããŒã¯ãŒããåé€ããå¿ èŠããããŸãããäœããã®æ¹æ³ã§ããã¹ã/ãã¹ãã¢ãžã¥ãŒã«ã§äœ¿çšããããã«ã³ã³ããŒãã³ãããšã¯ã¹ããŒãããå¿ èŠããããŸãã ãã®ããã«ããŠãã ããïŒ
@Component({
selector: 'app-user-stub-component',
template: ''
})
class UserStubComponent {}
export default UserStubComponent;
ããã§ãã¹ã¿ããã€ã³ããŒããããšãã¯ã©ãã§ãã次ã®ãããªæ¬åŒ§ãé¿ããå¿
èŠããããŸãã
import UserStubComponent from 'path'
ãããããŸãããããšãé¡ã£ãŠããŸãã ç§ã«ãšã£ãŠã¯ãAOTã³ã³ãã€ã«ã®åé¡ã解決ããŸãã
ç§ã®å Žåãä¿®æ£ããŸããã åé¡ã¯ã±ãŒã·ã³ã°ã«ãããŸããã ãã©ã«ãã«ã¯å€§æåã䜿çšããŸããããVSã³ãŒãã®èªåã€ã³ããŒãã§ã¯ãã¹ãå°æåã§ã€ââã³ããŒããããŸããã
@ renilbabu03JSã¯å€§æåãšå°æåãåºå¥ããŸãã
ç§ã®å Žåãåäœãã¹ãçšã«ä¿®æ£ããå€æãã€ããã¢ãã¯ããŸããã
export class
ãdefault export
ã«å€æŽããŸããïŒ
import { PipeTransform, Pipe } from '@angular/core';
@Pipe({
name: 'translate'
})
class TranslatePipeMock implements PipeTransform { // <-- NOT: "export class TranslatePipeMock implements PipeTransform"
public name = 'translate';
public transform(query: string): any {
return query;
}
}
export default TranslatePipeMock;
ããã«å¯Ÿããä¿®æ£ã¯ãããŸããïŒ
export default <class>
ãè©ŠããŸãããã ng serve --aot
ãå®è¡ãããšããšã©ãŒãã¹ããŒãããŸããã¢ãžã¥ãŒã«ã«ãã£ãŠãšã¯ã¹ããŒããããäºæããªãå€ 'null' ã
ãšãŠãã€ã©ã€ã©ããŸãã
@redplaneãªãããªãã¯ããããããã®ã§ããïŒ default
ãšã¯ã¹ããŒããæå³ããŸãã
圌ãèªèº«ããããè¡ãæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
https://github.com/angular/angular/blob/master/aio/content/examples/testing/src/testing/router-link-directive-stub.ts
import
exported
ã¢ã»ããã§ãªãéãããã¡ã€ã«ãååšãããã©ããAngularãæ°ã«ããã®ã¯ãªãã§ããïŒ
å€ãã®å Žåãã³ã³ããŒãã³ãããªãã¡ã¯ã¿ãªã³ã°ããããã³ã³ããŒãã³ããåé€ãããããŠããŠãCommonJSã®æ代ã«è¡ã£ãããã«ãå€ãã³ã³ããŒãã³ãåç §ãã³ã¡ã³ãã¢ãŠããããã ãã§ãã ãã¬ã«ãã¡ã€ã«ã䜿çšããããšã¯ãªãã®ã§ãããã¯ååã«å®å šã§ãããã®åã§äœåºŠãçŒãä»ãããããããAngularã«ãããžã§ã¯ãããã¢ã»ãããç©ççã«åé€ããããšã匷å¶ãããããšã¯ãéŠã®å¥¥æ·±ãã«ãããšãã«åãå ¥ããããŸããããããã¿ã€ãã³ã°ãã§ãŒãº..
ç§ã¯ãã®ãããžã§ã¯ãã«åãçµãã§ããå¯äžã®éçºè ã§ãããæ°ããæ©èœãåºè·ããªããã°ãªããªãäžã§ææ°ã®å®å®ããããŒã«ã«å°éããããã«ç©äºããªãã¡ã¯ã¿ãªã³ã°ããã®ã¯å°çã§ãããããAngular6ã§ç«ã¡åŸçããŠããŸã...å°ãªããšããAngular6 +ã«ãã®åäœãç¡å¹ã«ããããã®ã³ã³ãã€ã©ãã©ã°ãé©çšã§ããã°çŽ æŽããããšæããŸã...
ç§ã®å ŽåãAngularã©ã€ãã©ãªãããžã§ã¯ããã»ããã¢ããããŠããŸãã ã©ã€ãã©ãªå ã®ã³ã³ããŒãã³ãã®1ã€ã§ãããã€ãã®åæåã宣èšããŸããããããã®åæåãã¢ããªã±ãŒã·ã§ã³ãããžã§ã¯ãã§äœ¿çšããããã«ãã¢ããªã±ãŒã·ã§ã³ã«ãŒãã®projectsãã£ã¬ã¯ããªãžã®çžå¯Ÿãã¹ã䜿çšããŠã€ã³ããŒãããŸããã
ããããAngularã³ã³ãã€ã©ãã¢ããªã±ãŒã·ã§ã³ãããžã§ã¯ãã®ããããã®ngModuleã§ã©ã€ãã©ãªã³ã³ããŒãã³ãã宣èšããããšãæãã§ããçç±ã§ãã
ãã®ãšã©ãŒã解決ããã«ã¯ãåæåãpublic-api.tsãã¡ã€ã«ã«å®£èšããçžå¯Ÿã€ã³ããŒããã¹ã§ã¯ãªãã©ã€ãã©ãªããçŽæ¥ã€ã³ããŒãããã¢ããªã±ãŒã·ã§ã³ãããžã§ã¯ãã§äœ¿çšããå¿ èŠããããŸãã
äŸãã°ïŒ
ã©ã€ãã©ãªãããžã§ã¯ãåïŒ components-lib
ã¢ããªã±ãŒã·ã§ã³ãããžã§ã¯ãåïŒ demo-app
ã©ã€ãã©ãªãããžã§ã¯ãå ã§å®£èšãããã€ã³ã¿ãŒãã§ã€ã¹ãã¯ã©ã¹ãåæåãªã©ã䜿çšããã«ã¯ãçŽæ¥ãã¹ã䜿çšããŠããããã€ã³ããŒãããŸãã
import {SearchEnum} from'components-lib ';
ããªãã§ãã ãã
import {SearchEnum} from '../../../ projects / components-lib / path-to-your-component';
ç§ã¯ãããèªåã§èŠã€ããã®ã«äœæéãè²»ãããŠããã®ã§ããããå°æ¥èª°ãã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã
ng9ã§æ§ç¯ãããã©ã€ãã©ãªã®äºææ§ãç¶æããããã®åé¡ããããŸããng8ãå®è¡ããŠãããŠãŒã¶ãŒã䜿çšã§ããããã«ãããã£ãã®ã§ãã
ã©ã€ãã©ãªãéããŠãã³ã³ããŒãã³ããæ¡åŒµã§ããããã€ãã®ãŠãŒãã£ãªãã£ã¯ã©ã¹ãæäŸããŸãã 芪ã¯ã©ã¹ã®ãã§ãŒã³ã§ã¯ããããã®äžéšã¯æœè±¡çã§ãããng9ã§ã¯ng8ãšäºææ§ãæãããããã«@Directive({ selector: 'random' })
ãå¿
èŠã§ãã
ã ããç§ã¯ã»ãšãã©ããã§éããŸãã...ãããïŒ
Cannot determine the module for class NgxSubFormComponent in /........./node_modules/ngx-sub-form/ngx-sub-form.d.ts! Add NgxSubFormComponent to the NgModule to fix it.`
ç§ã¯ã©ã€ãã©ãªå ã®ã¢ãžã¥ãŒã«ãå ¬éããŠããŸããã人ã ã¯ç§ãã¡ãæäŸããã¯ã©ã¹ãæ¡åŒµããããšã«ãªã£ãŠããŸãã ãã ããã¢ãžã¥ãŒã«ã«èŠªã¯ã©ã¹ãã€ã³ããŒãããå¿ èŠã¯ãããŸããïŒæå³ããããŸããïŒã
ã ããç§ã¯ç«ã¡åŸçããŠããŠãäžäœäºææ§ãæããã«ng9ã«ã¢ããã°ã¬ãŒãããå¿ èŠãããææ°ã®å€æŽãªãªãŒã¹ãã«ããããŸã
ã¿ãªããããã®åé¡ã«ã€ããŠæ²é»ããŠãã¿ãŸããã
View Engineã®ngcã¯ãèšèšäžããã³ã³ãã€ã«ãå
ã®ãã¹ãŠã®ã³ã³ããŒãã³ãã«å¯ŸããŠngfactory
ãã¡ã€ã«ãçæããŸããã€ãŸããtsconfigã«ãã£ãŠå®çŸ©ãããTSãã¡ã€ã«ã®ãã«ã»ããã§ãã ãããTypeScriptã®æ¹æ³ã§ã
ããèªäœãæ©èœããŸã-tsconfigã§å®çŸ©ããããã¹ãŠã®ãã¡ã€ã«ãã³ã³ãã€ã«ããŸãã ngcã¯ããã®äžã«è¿œå ã®åŠçãè¡ã£ãŠããã ãã§ãã
ãããã£ãŠã @Component
ããã®ã³ã³ãã€ã«ã«ååšããngcããããèªèã§ããå ŽåïŒã€ãŸãããããã¬ãã«ã§ãšã¯ã¹ããŒããããŠããå ŽåïŒãngcã¯ãããã³ã³ãã€ã«ããããšããŸãã ngcãæåã«ã³ã³ããŒãã³ãã宣èšãããã¡ã€ã«ãã³ã³ãã€ã«ããªãããã«ãã以å€ã«ãããåé¿ããæ¹æ³ã¯ãããŸããã
ãããè¡ãæ£ããæ¹æ³ã¯ãtsconfigã®ã¹ã³ãŒããèšå®ããããšã§ãã ããšãã°ããã¹ãŠã®ãã¡ã€ã«ãå«ããšãã£ã¿ãŒçšã®ãããã¬ãã«ã®tsconfigãšããšãã£ã¿ãŒæ§æãç¶æ¿ããŠã¹ããã¯ãã¡ã€ã«ãé€å€ããã¢ããªã±ãŒã·ã§ã³ã³ã³ãã€ã«çšã®tsconfig.app.json
ããããšããŸãã ã¢ããªã®èšå®ã®ã¿ãngcã§ã³ã³ãã€ã«ãããŸãã
ãããžã§ã¯ãïŒåtsconfigã¯ããããžã§ã¯ããïŒã¯ãã³ã³ããŒãã³ããšãã®ã¢ãžã¥ãŒã«ãåžžã«äžç·ã«ã³ã³ãã€ã«ãããããã«æ§æããå¿ èŠããããŸãã
ã¢ã€ããŒã§ã¯ãåãã«ãŒã«ãäŸç¶ãšããŠå€§éšåé©çšãããŸãããããã€ãã®å°ããªéãããããŸãã
@Component
ãã³ã³ãã€ã«ããããšããŸããjit: true
ãã©ã°ãè¿œå ããããšã§ãç¹å®ã®ã³ã³ããŒãã³ããŸãã¯ã¢ãžã¥ãŒã«ãç¡èŠããŠå®è¡æãŸã§æ®ãããã«Ivyã³ã³ãã€ã©ã«æ瀺ããããšãã§ããŸãã@alxhubãšã©ãŒã§ã¯ãªããªã£ããšèããŠããããã§ãïŒ
ngcã¯tscãè¡ãããšããã¹ãŠã³ã³ãã€ã«ããããšããtscã¯ãã®ã¹ã³ãŒãå ã§ãã¹ãŠãã³ã³ãã€ã«ããããšãç解ããŠããŸãã ããã¯èšã£ãŠããã³ã³ããŒãã³ããã¢ãžã¥ãŒã«ã«è¿œå ãããšããèŠä»¶ã¯100ïŒ è§åºŠã®åé¡ã§ãããããtypescriptãããžã§ã¯ãã¹ã³ãŒãããã³ã³ããŒãã³ããåé€ããããšã¯ã猶ã蹎ãé£ã°ããããªãã®ã§ãã ããã«ããã¬ã«ãã¡ã€ã«ã®ãããªãã¿ãŒã³ãäžè¬çã§ãããããéäžã§åãšã¯ã¹ããŒããããã¡ã€ã«ãåé€ããã«ãã³ã³ãã€ã«ãã1ã€ã®ãã¡ã€ã«ãæ¬åœã«åé€ããããšã¯é£ããå ŽåããããŸãã ããããäžèšã®ããããã®ã³ã³ããŒãã³ããé€å€ããããšããåŒã³ããããã°ãã°äžæºã«èŠèãããçç±ã§ãã
ivyã®æ®ãã®å¶éïŒã¢ãžã¥ãŒã«ã®ãªãã³ã³ããŒãã³ãã®ãã³ãã¬ãŒããšã©ãŒïŒã«é¢ããŠããããã«ãèŠåãèŠæ±ããã®ã¯å€ãããŸããïŒ ã³ã³ããŒãã³ããã¢ãžã¥ãŒã«ã¬ã¹ãšããŠèå¥ãããåã«ã¿ã€ããã§ãã¯ãè¡ããããšãããã¯ããå°é£ïŒãŸââãã¯äžå¯èœïŒã«ãªãå¯èœæ§ãããããšãç解ããŠããŸããã Warning: ExampleUnusedComponent does not belong to an NgModule, and will be excluded from the output
ã«æ²¿ã£ãèŠåã¯ãã³ã³ããŒãã³ãïŒããã³ããã«ãã£ãŠåç
§ããããã®ä»ã®ã³ã³ããŒãã³ãïŒã¯ãngModuleã«è¿œå ãããªãéãå«ãŸããŸããã
å šäœãšããŠãç§ã¯ãã®åé¡ã®åããèŠãŠéåžžã«è奮ããŠãããivyã³ã³ãã€ã©ã®æ°ããå€æŽã§å ã®ãŠãŒã¹ã±ãŒã¹ãè©Šãããšã楜ãã¿ã«ããŠããŸãïŒ
æãåèã«ãªãã³ã¡ã³ã
@DzmitryShylovich䜿çšããŠããã³ã³ããŒãã³ããã¢ãžã¥ãŒã«ã®äžéšã§ããå¿ èŠãããããšã¯çã«ããªã£ãŠããŸãã ããããã³ã³ãã€ã©ã«é¢ããéãããããã®ãã¡ã€ã«ã¯éèŠã§ã¯ãããŸããã ãããã¯æªäœ¿çšã®åç §ãããŠããªã.tsãã¡ã€ã«ã§ãããããŸããŸã³ã³ããŒãã³ããå«ãŸããŠããŸãã