Reputation: 14938
I have migrated my angular 7 app to 8.0.0 and i'am now trying the new compiler ivy.
The app works perfectly without ivy but when i try to compile with it i have the following error :
Cannot combine @Input decorators with query decorators
No line number , no file , nothing ... hard to debug anything.
I have warning just before that , but i don't know if it's related :
WARNING in Entry point 'angular-tree-component' contains deep imports into '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'. This is probably not a problem, but may cause the compilation of entry points to be out of order.
Any ideas ?
Upvotes: 13
Views: 17282
Reputation: 837
I had the same problem updating my project from angular v8 to angular v11. If this is your case, it is likely that you have activated the --force flag. My advice is that you don't. You check the warnings it shows you and solve them one by one. Basically the warnings mean an update of third party libraries.
Upvotes: 0
Reputation: 1801
My issue was that I mistakenly put multiple query decorator like below
@ViewChild(DataTableDirective, { static: false })
@ViewChild(DataTableDirective, { static: false })
So issue resolved only by removing one decorator.
Upvotes: 0
Reputation: 5024
I had a similar issue and the only way I could get my Angular App running was to disable the offending code in the bootstrap library.
I commented out the references to the ratings module:- NgbRatingModule in the node_modules/@ng-bootstrap/ng-bootstrap/index.js file.
@Obaid Above is probably right, but I couldn't find the conflict.
Upvotes: 1
Reputation: 2398
Upgrading to Angular 9 I got the same error, the responsible code of this error, for me, was the following:
@Input() @ContentChild(Component) actions: Component;
The problem is that I can't combine @Input()
and @ContentChild
, so I replaced the code responsible of the error with the following:
get actions(): Component {
return this._actions;
}
private _actions: Component;
@Input()
set actions(value: Component) {
this._actions = value;
}
@ContentChildren(Component)
set viewActions(value: Component) {
if (!this._actions && value) {
this._actions = value;
}
}
Upvotes: 3
Reputation: 2663
I've had had the same error on a project, and I found that the version of ng-bootstrap in my package.json was 3.0.0 and angular version was 8.0.
I upgraded the ng-bootstrap library to 5.0.0 and the issue resolved.
So in essence, it was due to library mismatch versions, you may also search in this direction...
Upvotes: 4
Reputation: 14257
The problem is that somewhere in your application you're using the @Input
decorator together with one of the query decorators (@ContentChild
, @ContentChildren
, @ViewChild
, @ViewChildren
, @Query
). This combination of decorators actually makes no sense and may prevent the compiler from correctly analyzing your code, therefore you get the error Cannot combine @Input decorators with query decorators
.
Look through your code and remove every @Input
decorator from members which have a query decorator applied. Also, you might check if all of your 3rd party libraries are compatible with angular 8.0.0.
Upvotes: 11