[x] Bug report <!-- Please search GitHub for a similar issue or PR before submitting -->
ãã©ãŠã¶ã³ã³ãœãŒã«ã§ãšã©ãŒãçºçããïŒããã£ãããããªããšã©ãŒïŒApiServiceã®ãã¹ãŠã®ãã©ã¡ãŒã¿ã解決ã§ããŸããã
泚ïŒApiServiceã¯ãããããç§ã®ãµãŒãã¹ã®ååã§ãã
éçºã¢ãŒããšæ¬çªã¢ãŒãã§ãç§ã®ãµãŒãã¹ã«HttpClientãæ¿å ¥ããå¿ èŠããããŸã
ããã«ã¡ã¯ã¿ããª..ç§ã¯å°ããªangular-cliãããžã§ã¯ããè¡ããŸããã ããŒã¿ãååŸãã3ã€ã®ãµãŒãã¹ãäœæããŸããã 1ã€ã®ãµãŒãã¹ã¯ãããŒã³ãŒãåãããããŒã¿ãæäŸããããããFakeServiceããšåŒã°ããŸã...ãã1ã€ã®ãµãŒãã¹ã¯ãTestServiceããšåŒã°ããã³ã³ã¹ãã©ã¯ã¿ãŒã«å¥ã®ãµãŒãã¹ïŒApiServiceïŒãæ¿å ¥ãããŸãã ApiServiceã¯ãHttpClientã䜿çšããŠãµãŒããŒããããŒã¿ãååŸããŸãã
ããããFakeServiceãïŒéçºã¢ãŒãã§ïŒäœ¿çšããŠãããšãã«ã説æãããŠãããšã©ãŒã¡ãã»ãŒãžã衚瀺ãããŸãã
ãããç§ã®app.module.tsã§ã
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { environment } from './../environments/environment';
import { AppComponent } from './app.component';
import { ApiService } from './services/api.service';
import { TestService } from './services/test.service';
import { FakeService } from './services/fake.service';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
HttpClientModule
],
providers: [
ApiService,
{
provide: TestService,
useClass: environment.production ? TestService : FakeService
}
],
bootstrap: [AppComponent]
})
export class AppModule { }
ãããç§ã®api.service.tsã§ã
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
export class ApiService {
constructor(private httpClient: HttpClient) {
}
get(path: string): Array<any> {
switch (path) {
case '/tests':
// this.httpClient.get(`https://localhost/poneyRacerApi/races`)
// .subscribe((response: Array<IRaceModel>) => {
// return response;
// } );
return [{name: 'London'}, {name: 'Montréal'}];
}
return [];
}
}
ãããç§ã®fake.service.tsã§ã
import { Injectable } from '@angular/core';
@Injectable()
export class FakeService {
constructor() {
}
list(): Array<any> {
return [{name: 'London'}, {name: 'Lyon'}, {name: 'Paris'}, {name: 'Montréal'}];
}
}
ãããŠæåŸã«ããããç§ã®test.service.tsã§ã
import { Injectable } from '@angular/core';
import { ApiService } from './api.service';
@Injectable()
export class TestService {
constructor(private apiService: ApiService) {
}
list() {
console.log('Listing races');
return this.apiService.get('/tests');
}
}
test.service.tsã§ãããããã«ãä»ã®ApiServiceãã³ã³ã¹ãã©ã¯ã¿ãŒã«æ¿å
¥ããŸãã
app.module.tsã§ãããããã«ãæ¬çªç°å¢ã§ã¯TestServiceã䜿çšããŠããïŒããšãã°ã ng serve --prod
ãåŒã³åºãå ŽåïŒãæ¬çªç°å¢ã§ã¯ãªããšãã«FakeServiceã䜿çšããŠããŸãïŒ ng serve
ïŒ
ng serve --prod
åŒã³åºããŠããšã©ãŒã¡ãã»ãŒãžã¯è¡šç€ºãããŸããã ããããéçºã¢ãŒãã§ãµãŒãã¹ãæäŸããŠãããšããã€ãŸãTestServiceã®ä»£ããã«FakeServiceã䜿çšããŠãããšãã¯ã次ã®ãšã©ãŒã¡ãã»ãŒãžã衚瀺ãããŸãïŒ ng serve
ïŒ
Uncaught Error: Can't resolve all parameters for ApiService: (?).
at syntaxError (compiler.es5.js:1694)
at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getDependenciesMetadata (compiler.es5.js:15925)
at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getTypeMetadata (compiler.es5.js:15793)
at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getInjectableMetadata (compiler.es5.js:15779)
at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver.getProviderMetadata (compiler.es5.js:16070)
at compiler.es5.js:15999
at Array.forEach (<anonymous>)
at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getProvidersMetadata (compiler.es5.js:15959)
at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver.getNgModuleMetadata (compiler.es5.js:15614)
at JitCompiler.webpackJsonp.../../../compiler/@angular/compiler.es5.js.JitCompiler._loadModules (compiler.es5.js:26958)
ApiServiceã§ã³ã³ã¹ãã©ã¯ã¿ãŒã®ãã©ã¡ãŒã¿ãŒïŒãã©ã€ããŒãhttpClientïŒHttpClientïŒãåé€ãããšãéçºã¢ãŒãã§å®è¡ããŠãããšãïŒã€ãŸããFakeServiceã䜿çšããŠãããšãïŒã«ãšã©ãŒã®åé¡ã¯çºçããŸããããhttpClientã䜿çšããŠHttpèŠæ±ãè¡ãããšã¯ã§ããŸããã HttpClientã䜿çšããããã®
ãããæ¬åœã®è§åºŠã®åé¡ãªã®ãããããšãäœãééã£ãããšãããã®ãããããŸããããã®åé¡ã«ã€ããŠå©ããŠããã ããŸãããã
æäŒã£ãŠãããŠããããšãããããŸãã
Angular version:4.4.3
Browser:
- [X] Chrome (desktop) version 60.0.3112.113
For Tooling issues:
- Node version: 8.4.0
- Platform: Windows
Others:
Visual Studio Code 1.16.1
Angular-Cli: 1.4.3
ç§ã®app.component.tsãã©ã®ããã«èŠãããã確èªããå¿ èŠãããå Žåã«åããŠ
import { Component, OnInit } from '@angular/core';
import { TestService } from './services/test.service';
@Component({
selector: 'tst-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
title = 'tst';
races: Array<any>;
constructor(private testService: TestService ) {}
ngOnInit() {
this.races = this.testService.list();
}
}
ApiService
@Injectable()
ã¢ãããŒã·ã§ã³ããããŸããã ãã®ãããªãµããŒããªã¯ãšã¹ãã¯ãGitHubã§ã¯ãªãStackOverflowã«ååšããå¿
èŠããããŸãã
@benelliottãã³ãããããšãããããŸãã ç³ãèš³ãããŸããããè§åºŠã®åé¡ã ãšæããŸããã StackOverflowãšã€ã³ã¿ãŒãããå šè¬ã«ã€ããŠå€ãã®èª¿æ»ãè¡ããŸãããã解決çãèŠã€ãããŸããã§ãããããã§ãããã¯è§åºŠã®åé¡ã ãšæããŸãã...ãããéããŸãã ããããšãããŸãããããªãã
ãšã©ãŒïŒã«ãŒã¿ãŒã®ãã¹ãŠã®ãã©ã¡ãŒã¿ãŒã解決ã§ããŸããïŒïŒïŒãïŒãïŒãïŒãïŒãïŒãïŒãïŒïŒã
ç§ã®angular4ã¢ããªã®ãã¹ãã§ãã®ãšã©ãŒãçºçããŸãã
ç§ã¯åãåé¡ã«çŽé¢ãã解決ããŸãã
ç§ã®å Žåãserver.service.tsãã¡ã€ã«ã®@Injectableãã³ã¬ãŒã¿ãèŠéããŠããŸãã
InjectableïŒïŒã®åã«@ããããŸããã§ããã
éåžžã«åçŽãªã·ããªãªã§ãšã©ãŒãçºçããããã«ã€ããŠWebäžã§äœãèŠã€ãããªãå Žåã¯ãããããããã¯ææžåããã«ã¯åçŽããã/æãã§ãã ä»ãèªåã§äœåºŠããããèŠã€ããŸããã
ãã®1æ¥åŸãç§ã¯å¿
èŠãšã¯æããªãã£ãããã€ãã®ããªãã£ã«ã
ããã¯ç§ãæ¬ ããŠãããã®ã§ãïŒ
import 'core-js/es7/reflect';
ãã®åé¡ãçºçããå¥ã®ã·ããªãªã¯ããng build --watchããå®è¡ããŠããããng build --prod = envããå®è¡ãããšããã«ããããDISTãã¡ã€ã«ãç Žæãããšã©ãŒãçºçããå Žåã®ããã§ããç§ã®ã€ã³ã¹ã¿ã³ã¹ã¯ã@ Injectableã«é¢ããããŒã¿ãµãŒãã¹ã®ãšã©ãŒã§ããã
ãããã£ãŠããng build --watchããåæ¢ããå®å šã«åæ¢ãããããng build --prod = envããå®è¡ããããšããå§ãããŸãã
ãã®åé¡ã«ééãã人ã®ããã®åãªãåèãŸã§ã«ã
ããã«1æéèŠåŽããåŸãæåŸã«@odolhaã®ãããã§ã core-js / es7 / reflectã
ããäžåºŠè¿œå ãããšåé¡ã解決ããŸãïŒ
ããªãã¯éåžžã«å€ãã®ã¿ããªããããšã...ç§ã¯åãåé¡ãæ±ããŠããïŒåé€ã³ã¢-JS / ES7 /åæ ...ããã¯ç§ã«ããããã®@odolhaãå©ããã®ã§ã@ tanou73
Vueã®ããã«äžè¬çãªAngularã®èœãšãç©Žãæ€åºããå®éã®æçšãªãšã©ãŒã¡ãã»ãŒãžãè¿œå ããããšã«ã€ããŠäœãèãã¯ãããŸããïŒ
ãã®ãšã©ãŒã¡ãã»ãŒãžã衚瀺ãããŸãã...解決ããã®ã¯ããã¬ã«ã䜿çšããã®ã§ã¯ãªããçžå¯Ÿãã¹ã䜿çšããŠåãã¢ãžã¥ãŒã«ãããµãŒãã¹ãã€ã³ããŒãããããšã§ããã
@ kabb5ããã¯Angularã«ãã£ãŠå©ãããããã®ã§ã¯ãããŸãããAngularãåŸãããšãã§ããã®ã¯undefined
å€ã ãã§ãããããªããäœãããããæšæž¬ããæ¹æ³ã¯ãããŸããã
ã¢ããªãangular2ããangular5ã«ã¢ããã°ã¬ãŒããããšããã®ãšã©ãŒãçºçããŸããã CLIãšã package.json
ã®äŸåé¢ä¿ãšdevDependenciesãã¢ããã°ã¬ãŒãããããšã«å ããŠãå€ã/tsconfig.json
ãš/angular-cli.json
ãæ°ãã/tsconfig.json
ã«æŽæ°ããå¿
èŠããããŸããã ã src/tsconfig.app.json
ã tsconfig.spec.json
ãããã³/.angular-cli.json
ãåŒã³åºããŠããã
rm -rf node_modules/
npm i
@odolhaãããç§ã®åé¡ã§ããã ç§ã§ã¯ãªãäžæ¥ãéãããŠããã£ãïŒããªãã®æçš¿ãèŠã€ããã®ã«çŽ20åããããããŸããã§ãã
ããªãã£ã«ãåé€ããçç±ã¯ããã®ããªãã£ã«ã®polyfill.ts
ã«æ¬¡ã®ãããªã³ã¡ã³ããããããã§ãã
// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
ã ãããç§ã¯èªåã®aotãããã€ã¡ã³ãã®ããã«ããã€ãã®æé©åãè¡ã£ãŠããŠããããåãé€ããŸãã...ããŒã«ã«éçºïŒng-serveã䜿çšã䜿çšããŠããããšãå®å šã«å¿ããŠããŸã:(
ã ãããããããšãããããŸã...
ç§ã§ããããµãŒãã¹ã®ããã«ãã®åé¡ã«çŽé¢ããŸããã ç§ã®å Žåãpolyfill.tsã«ES7 / Reflectpolyfillãè¿œå ãçŽããšåé¡ã解決ããŸããã ç§ã¯ãããã誀ã£ãŠåé€ããŸããã
èšé²ã®ããã«ãç§ã¯ãã®ãšã©ãŒã§äžžäžæ¥ã倱ããŸãã...ð
main.ts
ã§ã¯ãããªãã£ã«ãæåã«_絶察ã«ããŒãããå¿
èŠããããŸã
import './polyfills.ts';
ããªãã®æåã®è¡ã§ãã
ããŠãç§ã¯ã€ãã«ãšã©ãŒããã³ãŒãããŸããã
ã³ã³ããŒãã³ãã«äžæãªã€ã³ããŒãã¹ããŒãã¡ã³ãããããšãAngularã¢ããªå
šäœãã¯ã©ãã·ã¥ããããšã«æ³šæããŠãã ããããã®ãããã¡ã¢ããŠãããŠãã ããã
ããèããŠãã®ãšã©ãŒã解決ããŸããã
ããã圹ã«ç«ãŠã°å¹žã
ã«ãžã§ã¿ã³ãããªã²ã¹
埪ç°äŸåïŒãã¡ã€ã«éã§ãšã¯ã¹ããŒãããããã«ããŒæ§é ïŒã§ãçºçããå¯èœæ§ããããŸãã
ãã¹ãŠã«æè¬ããŸããç§ã¯åãåé¡ãæ±ããŠããŸããïŒç§ã¯ãããåã³è¿œå ããåŸã«core-js / es7 / reflectãåé€ããŸãã:)
ç§ã®å Žåããã€ãã«äœãæªãã®ããããããŸããã
ãšã©ãŒãçºçããå ŽåïŒ Can't resolve all parameters for PageApiService in .../services/pageService.ts: ([object Object], ?)
çå笊ã®ããå Žæã«åé¡ããããšå®ã¯èšã£ãŠããããã§ãã ç§ã®å ŽåãURLã«HttpClientãšæååãå«ãŸããŠããŸããã æçµçã«ãããã€ããŒå ã§ããã䜿çšãããã®æååãæäŸããããšãæåŸ ããŠã ããããããã¯ããèš±å¯ãããŠããªãããã«èŠããŸããïŒ
ç§ã®ãµãŒãã¹ã¯ïŒ
@Injectable()
export class PageApiService<T> {
private baseUrl: string;
constructor(private http: HttpClient, private url: string) {
this.baseUrl = window.location.protocol + '//' + window.location.host + "/api/";
}
次ã®ãããªã¢ãžã¥ãŒã«å ã§ã®äœ¿çšïŒ
providers: [{
provide: 'ContactPlanPageService', useFactory: http => new PageApiService<ContactPlanModel>(http, 'contactplan/page'),
deps: [HttpClient]
}],
ããããããã¯æ©èœããŸãã..ããã§ããããã¯åŸã®ããŒãžã§ã³ã§ãšã©ãŒã«ãªãã®ã§ãç§ã«èŠåãäžããŸã...
polyfill.tsã«core-js / es7 / Reflectãã€ã³ããŒãããŸããããããã§ããã®ãšã©ãŒãçºçããŸãã ããã¯ç§ã倧ãã«æ··ä¹±ãããŸãã
Uncaught Error: Can't resolve all parameters for ApplicationModule: (?).
at syntaxError (main.bundle.js:7977)
at CompileMetadataResolver../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver._getDependenciesMetadata (main.bundle.js:17878)
at CompileMetadataResolver../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver._getTypeMetadata (main.bundle.js:17771)
at CompileMetadataResolver../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver.getNgModuleMetadata (main.bundle.js:17639)
at CompileMetadataResolver../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver.getNgModuleSummary (main.bundle.js:17449)
at main.bundle.js:17563
at Array.forEach (<anonymous>)
at CompileMetadataResolver../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver.getNgModuleMetadata (main.bundle.js:17551)
at CompileMetadataResolver../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver.getNgModuleSummary (main.bundle.js:17449)
at main.bundle.js:17536
@dongdongmaoç§ã¯äœåºŠããã®åé¡ãæ±ããŠããŸããïŒ
1.ïŒãµãŒãã¹ã§@InjectableïŒïŒã䜿çšããã®ãå¿ããŠ
ç§ã®è§åºŠãµãŒãã¹ã®äžéšãã¢ãžã¥ãŒã«ãªã©ãšããŠãšã¯ã¹ããŒã2ïŒ export default const foo = 123
ã®ä»£ããã«export const foo = 123
ã ããã§éèŠãªã®ã¯ããšã¯ã¹ããŒããšããŠdefault
ã䜿çšããªãããšã§ãã
@SerkanSipahiã¯å®éã«ç§ãuseingãªã@Injectable()
䜿çšããªããã¹ãŠã®ãµãŒãã¹ã«ãã export default
....ä»»æã®ãµãŒãã¹ãŸãã¯ã¢ãžã¥ãŒã«ã«
ng serve
䜿çšãããšãããžã§ã¯ãã¯æ©èœããŸããã webpack.configã§webpack-dev-server
ã䜿çšãããšããã®ãšã©ãŒã¯ApplicationModuleã®ãã¹ãŠã®ãã©ã¡ãŒã¿ãŒã解決ã§ããŸãã:(ïŒïŒã çºçããŸã
ããã¯ãã³ã³ããŒãã³ããå¥ã®ã³ã³ããŒãã³ããæ¡åŒµããã³ã³ã¹ãã©ã¯ã¿ãŒã§super()
ãåŒã³åºãã®ãå¿ããå Žåã«ãçºçããå¯èœæ§ããããŸãã
ããã¯ãã³ã³ããŒãã³ããå¥ã®ã³ã³ããŒãã³ããæ¡åŒµããã³ã³ã¹ãã©ã¯ã¿ãŒã§
super()
ãåŒã³åºãã®ãå¿ããå Žåã«ãçºçããå¯èœæ§ããããŸãã
ããã¯ç§ã®å Žåã§ãããã¯ã©ã¹ãæ¡åŒµãã constructor
ããŸã£ããå®çŸ©ããŸãã
ã³ã³ã¹ãã©ã¯ã¿ãŒãä»ããŠèª€ã£ãããŒã¿ãæäŸããããšã§ç§ã«èµ·ãããŸããã
constructor(private actions$: Actions, private store: MyStore) {}
ãã以å€ã®constructor(private actions$: Actions) {}
åããšã©ãŒãçºçããŸãããäŸåé¢ä¿ãã€ã³ããŒãæ¹æ³ã®é ã«ãªãããã«app.module.tsãåé 眮ããããšã§ãåé¡ã解決ã§ããŸããã ãããµãŒãã¹ãã以äžã®app.module.tsã§å®çŸ©ãããŠããå¥ã®ãµãŒãã¹ãã€ã³ããŒãããŸããããæããã«ãããåé¡ã§ããã ããã¯éæ³ã®ããã«è§£æ±ºãããŸããïŒ
ãã®1æ¥åŸãç§ã¯å¿ èŠãšã¯æããªãã£ãããã€ãã®ããªãã£ã«ã
ããã¯ç§ãæ¬ ããŠãããã®ã§ãïŒimport 'core-js/es7/reflect';
CLIã䜿çšããã«ãã«ã¹ã¿ã Webpackæ§æã§Angular2ãå®è¡ããŸãã Babel 7ã«æ³šææ·±ãã¢ããã°ã¬ãŒãããåŸããã®åé¡ãçºèŠããå°æããŸããã æ°æ¥åŸãããªãã£ã«ãã€ã³ããŒãããããšã§åé¡ãä¿®æ£ãããŸãð
ãšã©ãŒã¡ãã»ãŒãžã¯ãæªè§£æ±ºã®ãã©ã¡ãŒã¿ã«ã€ããŠããå ·äœçã«ããå¿ èŠããããšæããŸã
掟çã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãŒãè¿œå ããã®ãå¿ããã®ã§ãä»æ¥ããããååŸããŸããã AOTã«ã¯æºè¶³ããŠããŸãããããã®å Žã§ã³ã³ãã€ã«ããããšã¯ã§ããŸããã§ããã
AOTã³ã³ãã€ã©ãããããã£ããããããšãæåŸ ããŠããŸããã
ãµãŒãã¹ããšã¯ã¹ããŒãããindex.tsãããå Žåã¯ããšã¯ã¹ããŒãã®é åºã確èªããŠãã ããã ããã¯ç§ãå©ããŸããã
ãã©ãŠã¶ã³ã³ãœãŒã«ã§æ¬¡ã®ãšã©ãŒãçºçããŸãïŒã_ OrdineComponentã®ãã¹ãŠã®ãã©ã¡ãŒã¿ã解決ã§ããŸããïŒïŒïŒïŒ._ã
ãããŠããã¯Vsã³ãŒãã¿ãŒããã«ã§ãªã³ã«ãªããŸãïŒ "埪ç°äŸåã®_WARNINGãæ€åºãããŸããïŒ
src \ app \ ordini \ ordini.component.ts-> src \ app \ shared \ ordini.service.ts-> src \ app \ ordini \ ordini.component.ts_ "
誰ããç§ãå©ããããšãã§ããŸããïŒ ç§ã¯ãã®ãªããžããªã«ãã¹ãŠãæã£ãŠããŸã
https://github.com/SDGItalySrl/Burger2Trip
src \ app \ ordini \ ordini.component.ts-> src \ app \ shared \ ordini.service.ts-> src \ app \ ordini \ ordini.component.t
ordineã³ã³ããŒãã³ãã«ordineãµãŒãã¹ãæ³šå ¥ããordineã³ã³ããŒãã³ãããµãŒãã¹ã«æ³šå ¥ããããšããŠããããšã¯æããã§ãã ããã¯äžå¯èœã§ãã ãµãŒãã¹ãå¿ èŠãªã³ã³ããŒãã³ããã€ã³ã¹ã¿ã³ã¹åããã³ã³ããŒãã³ããå¿ èŠãªãµãŒãã¹ãã€ã³ã¹ã¿ã³ã¹åããã«ã¯ã äŸåæ§æ³šå ¥ãã¿ãŒã³ã«ã€ããŠãèªã¿ãã ããã
ç§ã¯ãããã¯ã©ã¹ã§ãããšèããŠã€ã³ã¿ãŒãã§ãŒã¹ãæ³šå ¥ããããšããŠããããšã«ééããŸãã->ã³ã³ããŒãã³ãã¬ãã«ã®å€æ°ãã³ã³ã¹ãã©ã¯ã¿ãŒæ³šå ¥ã®å€éšã§å®£èšãããŠããããšã確èªããŠãã ããã
ç§ã®å Žåããã®åé¡ã¯æ¬¡ã®å Žåã«ã®ã¿çºçããŸãng build --prod
ãããŠããã¯æ¬¡ã®ã³ãŒãã«ãããŸããïŒ
import RestDataSource from './rest.datasource';
代ãã㯠-
import {RestDataSource} from './rest.datasource';
å€åããã¯èª°ããå©ããŸã
ãã®ã¡ãã»ãŒãžã«ã¯å€ãã®åå ãããããã§ãã ç§ã®å Žåãã©ã€ãã©ãªãããµãŒãã¹ã¯ã©ã¹ãæ¿å
¥ããããšããããã§ãããã ãããããã®ã¯ã©ã¹ã¯æ¡åŒµãããããšãç®çãšããŠããïŒåäœãè¿œå ããªãå Žåã§ãïŒã @Injectable()
ã¢ãããŒã·ã§ã³ããªãããã§ããã©ã¡ãããæœè±¡åããŸãã
ç§ã®å Žåãã«ãŒã¿ãŒãµãŒãã¹ã䜿çšããã«ã³ã³ã¹ãã©ã¯ã¿ãŒã«æ¿å ¥ããã ãã§ããã ãããåé€ãããšããã¹ãŠæ£åžžã«åäœããŸãã
ç§ã®å Žåããã®åé¡ã¯çºçããã ãã§ã
ng build --prod
次ã®ã³ãŒãã«ãããŸãã
import RestDataSource from './rest.datasource';
ããã©ããã-
import {RestDataSource} from './rest.datasource';
å€åããã¯äœäººãã®äººã ãå©ããããšãã§ããŸã
ããããç§ããã®ç¶æ³ã«ééããŸããã
ãã®ãšã©ãŒã¯ã埪ç°äŸåé¢ä¿ãããå Žåã«ãçºçããå¯èœæ§ããããŸãïŒããšãã°ããã¬ã«ã€ã³ããŒããééã£ãæ¹æ³ã§äœ¿çšããŠããããïŒã
äŸåæ§æ³šå ¥ã¯ä»ã®ã¯ã©ã¹ã§ã¯æ©èœããŸããã埪ç°äŸåæ§ãæã€ã¯ã©ã¹ã§ã¯æ©èœããªããããããã¯ç¹ã«æ··ä¹±ãæãå¯èœæ§ããããŸãã
ã³ã³ããŒãã³ãã®ãµãŒãã¹ã«Injectãã£ã¬ã¯ãã£ããè¿œå ããããšã§åé¡ã解決ããŸãã
ã³ã³ã¹ãã©ã¯ã¿ãŒïŒ@InjectïŒAppServiceïŒãµãŒãã¹ïŒAppServiceïŒ
å°ãéãåé¡ããã£ãã®ã§ã誰ããééããå Žåã«åããŠããã«ããããããŸãã
ç§ã¯æè¿v8ãããžã§ã¯ããã¹ãã³ã¢ããããprodhttps ïŒ//github.com/angular/angular-cli/issues/13734çšã«ã³ã³ãã€ã«ãããšãã«é«ã¡ã¢ãªã®åé¡ã«ééããŸãã
TL; DRïŒNG8ãããžã§ã¯ãããNG7ã«æ»ããå Žåã
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"module": "es2015",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2018",
"dom"
]
}
}
ç§ã®å Žåãã³ã³ããŒãã³ããã¡ã€ã«ãè€æ°ã®ãªããžã§ã¯ãã¿ã€ãããšã¯ã¹ããŒããããšãã«ãåé¡ã¯ãã§ã«çºçããŠããŸããããšãã°ã次ã®ããã«ãªããŸãã
'my-test.component.ts
åæåMyTestEnumããšã¯ã¹ããŒã{
..ã
}
@Component ïŒ...ïŒ
ã¯ã©ã¹MyTestComponentãå
¬éãã{
..ã
}
ç§ã«ãšã£ãŠã¯ãããã©ã«ãã§ãšã¯ã¹ããŒãããŠããŸããã
ãã®åé¡ã¯ãéã¢ã¯ãã£ãã®ããã«èªåçã«ããã¯ãããŠããŸãã
åæ§ã®åé¡ãŸãã¯é¢é£ããåé¡ãçºçããå Žåã¯ãæ°ããåé¡ãæåºããŠãã ããã
èªåäŒè©±ããã¯ããªã·ãŒã®è©³çŽ°ãã芧ãã ããã
_ãã®ã¢ã¯ã·ã§ã³ã¯ãããã«ãã£ãŠèªåçã«å®è¡ãããŸããã_
æãåèã«ãªãã³ã¡ã³ã
ApiService
@Injectable()
ã¢ãããŒã·ã§ã³ããããŸããã ãã®ãããªãµããŒããªã¯ãšã¹ãã¯ãGitHubã§ã¯ãªãStackOverflowã«ååšããå¿ èŠããããŸãã