我已经将我的angular 7应用程序迁移到了8.0.0,现在我正在尝试新的编译器常春藤。
该应用程序在没有常春藤的情况下可以完美运行,但是当我尝试使用它编译时,出现以下错误:
不能将@Input装饰器与查询装饰器组合
没有行号,没有文件,没有任何东西……很难调试任何东西。
在此之前我有警告,但是我不知道是否相关:
警告入口点“ angular-tree-component”包含深层导入 进入“ lodash / defaultsDeep”,“ lodash / get”,“ lodash / omit”, 'lodash / isNumber','lodash / first','lodash / last','lodash / some', 'lodash / every','lodash / compact','lodash / find','lodash / isString', 'lodash / isFunction','lodash / throttle','lodash / includes', “ lodash / pick”。这可能不是问题,但可能会导致 入口点的编译会出现问题。
有什么想法吗?
答案 0 :(得分:3)
问题是,应用程序中的某个地方您正在使用@Input
装饰器和查询装饰器之一({{1},@ContentChild
,@ContentChildren
,{{ 1}},@ViewChild
)。装饰器的这种组合实际上没有任何意义,并可能阻止编译器正确分析您的代码,因此会出现错误@ViewChildren
。
浏览您的代码,并从应用了查询修饰符的成员中删除每个@Query
装饰符。另外,您可能会检查所有第三方库是否都与angular 8.0.0兼容。
答案 1 :(得分:2)
升级到Angular 9时,我遇到了相同的错误,对我来说,此错误的负责代码如下:
& .\application.exe --option1 $option1 --user1 $user --password1 ($userpass -replace , '"', '\"')
问题是我无法结合使用@Input() @ContentChild(Component) actions: Component;
和@Input()
,因此我将导致错误的代码替换为以下内容:
@ContentChild
答案 2 :(得分:1)
我在一个项目中遇到了相同的错误,我发现我的 package.json 中的 ng-bootstrap 版本为3.0.0,且角度版本是8.0。
我将ng-bootstrap库升级到5.0.0,问题已解决。
因此,从本质上讲,这是由于库版本不匹配造成的,您也可以朝这个方向搜索...
答案 3 :(得分:1)
我遇到了类似的问题,并且我可以运行Angular App的唯一方法是禁用引导程序库中有问题的代码。
我注释掉了评级模块的引用:- node_modules/@ng-bootstrap/ng-bootstrap/index.js 中的 NgbRatingModule em>文件。
@Obaid以上可能是正确的,但我找不到冲突。
答案 4 :(得分:0)
我的问题是我错误地放置了多个查询装饰器,如下所示
@ViewChild(DataTableDirective, { static: false })
@ViewChild(DataTableDirective, { static: false })
因此问题仅通过删除一个装饰器来解决。
答案 5 :(得分:0)
我在将项目从 angular v8 更新到 angular v11 时遇到了同样的问题。如果是这种情况,很可能您已经激活了 --force 标志。我的建议是你不要。您检查它向您显示的警告并一一解决。 基本上,警告意味着第三方库的更新。