我们已经使用Angular v6.0.0-beta.3很长时间了,但是最近我们尝试升级到6.1.3版。
我一直无法使用角度示意图进行升级,因为它们似乎不支持外部注册表(我们使用Artifactory),因此我不得不手动对其进行升级,因此很有可能我搞砸了。
目前,升级后,我得到了这个堆栈跟踪:
Uncaught Error: Can't resolve all parameters for LoginComponent: (?).
at syntaxError (compiler.js:1016)
at CompileMetadataResolver.push../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver._getDependenciesMetadata (compiler.js:10917)
at CompileMetadataResolver.push../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver._getTypeMetadata (compiler.js:10810)
at CompileMetadataResolver.push../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver.getNonNormalizedDirectiveMetadata (compiler.js:10429)
at CompileMetadataResolver.push../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver._getEntryComponentMetadata (compiler.js:11013)
at compiler.js:11004
at Array.forEach (<anonymous>)
at CompileMetadataResolver.push../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver._getEntryComponentsFromProvider (compiler.js:11003)
at compiler.js:10976
at Array.forEach (<anonymous>)
LoginComponent注入AuthService。如果我将AuthService放在LoginComponent的provide
数组属性中,则它将停止抱怨该错误,并为另一个组件提供相同的错误。
我尝试用新的providedIn: 'root'
配置替换ALL Injectable的配置,但仍然无法使用。我试过清理npm缓存并删除node_modules,仍然是同样的问题。我迷失了自己做错了的事。
在AOT中运行实际上可以正确启动应用程序,但是当我使用某些组件(我认为是素材)进行操作时,我得到了这些堆栈跟踪信息:
ERROR TypeError: a[getSymbolIterator(...)] is not a function
at areIterablesEqual (core.js:5492)
at devModeEqual (core.js:5421)
at checkBindingNoChanges (core.js:7689)
at checkNoChangesNodeInline (core.js:10552)
at checkNoChangesNode (core.js:10541)
at debugCheckNoChangesNode (core.js:11144)
at debugCheckDirectivesFn (core.js:11072)
at Object.updateDirectives (login.component.html:37)
at Object.debugUpdateDirectives [as updateDirectives] (core.js:11061)
at checkNoChangesView (core.js:10440)
任何帮助将不胜感激。
编辑:LoginComponent构造函数
constructor(
private authService: AuthService) {
}
AuthService类声明
@Injectable()
export class AuthService {
我的所有提供程序都在AppModule中提供。
答案 0 :(得分:0)
将AuthService
放入providers
的{{1}}数组中
答案 1 :(得分:0)
在LoginComponent中的AuthService实例周围添加@Inject
装饰器
constructor(
@Inject(AuthService) private authService: AuthService) {
}
这有助于编译器知道AuthService将在以后注入。