Я создал сервис, подобный этому:
@Injectable({ providedIn: 'root' })
export class TestService {
value: any;
constructor(value: string = 'a') {
this.value = value;
}
}
Не удается создать с ng build -aot
ERROR in : Error: Internal error: unknown identifier []
at Object.importExpr$$1 [as importExpr] (C:\MyProject\node_modules\@angular\compiler\bundles\compiler.umd.js:24170:27)
at C:\MyProject\node_modules\@angular\compiler\bundles\compiler.umd.js:18100:37
at Array.map (<anonymous>)
at InjectableCompiler.depsArray (C:\MyProject\node_modules\@angular\compiler\bundles\compiler.umd.js:18066:25)
at InjectableCompiler.factoryFor (C:\MyProject\node_modules\@angular\compiler\bundles\compiler.umd.js:18130:36)
at InjectableCompiler.injectableDef (C:\MyProject\node_modules\@angular\compiler\bundles\compiler.umd.js:18149:44)
at InjectableCompiler.compile (C:\MyProject\node_modules\@angular\compiler\bundles\compiler.umd.js:18159:106)
at C:\MyProject\node_modules\@angular\compiler\bundles\compiler.umd.js:24015:90
at Array.forEach (<anonymous>)
at AotCompiler._emitPartialModule2 (C:\MyProject\node_modules\@angular\compiler\bundles\compiler.umd.js:24015:25)
at C:\MyProject\node_modules\@angular\compiler\bundles\compiler.umd.js:24008:48
at Array.reduce (<anonymous>)
at AotCompiler.emitAllPartialModules2 (C:\MyProject\node_modules\@angular\compiler\bundles\compiler.umd.js:24007:26)
at AngularCompilerProgram._emitRender2 (C:\MyProject\node_modules\@angular\compiler-cli\src\transformers\program.js:300:31)
at AngularCompilerProgram.emit (C:\MyProject\node_modules\@angular\compiler-cli\src\transformers\program.js:201:22)
at AngularCompilerPlugin._emit (C:\MyProject\node_modules\@ngtools\webpack\src\angular_compiler_plugin.js:879:49)
И предупреждение до этого:
Предупреждение. Не удалось разрешить все параметры для TestService в C: / MyProject / src / app / shared / context / test.service.ts: (?). Это станет ошибкой в Angular v6.x
Странная вещь в этом предупреждении состоит в том, что на самом деле я использую Angular 7.2 , в то время как ошибка предупреждает меня что это будет проблемой в Angular 6 ...
Я нашел способ обойти это, изменив службу на использование заводской функции:
@Injectable({ providedIn: 'root', useFactory: () => new TestService('a') })
export class TestService {
value: any;
constructor(value: string) {
this.value = value;
}
}
Теперь это строится успешно, но предупреждающее сообщение остается. И я не уверен, что это правильный способ ее решения.
Как мне создать службу с зависимостью и указать для нее значение по умолчанию?