XeroxDucati XeroxDucati - 1 year ago 355
AngularJS Question

IntelliJ and Angular 2 Argument Type Not Assignable Errors

Is Angular2 in IntelliJ (latest update of v15 - Ultimate) supposed to work? All the docs seem to say that it does via the AngularJS plugin, but I'm getting really odd intellisense errors. For example;

bootstrap(App, [
provide(LocationStrategy, {useClass: HashLocationStrategy})

 Argument type App is not assignable to parameter type Type

And standard annotations like;

{path: '/...', component: RootView, as: 'RootView', useAsDefault: true}

Argument type {path: string, component: RootView, as: string, useAsDefault: boolean}[] is not assignable to parameter type RouteDefinition[]

Has anyone run across this before? Anyone know how to make intelliJ play nice?

Source for App as requested;

import {Component, ViewEncapsulation} from 'angular2/core';
import {RootView} from './root-view';
import {
} from 'angular2/router';

selector: 'app',
templateUrl: './components/app/app.html',
encapsulation: ViewEncapsulation.None,
{path: '/...', component: RootView, as: 'RootView', useAsDefault: true}
export class App {

Answer Source

It turns out, for reasons I can not explain, that a constructor is required or IntelliJ gets really confused, and the confusion goes all the way down the dependency chain.

In my instance, the fix was simple, a default, empty constructor in App:

export class App {
    constructor() {}

But general rule of thumb in Angular2 with IntelliJ seems to be constructors on everything in the DI chain -- at least for the moment. I assume this is a bug and will be fixed in the angular plugin for IntelliJ -- I just submitted it to them.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download