You can't have a circular dependency this way. You can work around by using an interface
Plunker example
tata.ts
import { IToto } from './itoto';
export class Tata implements IToto {
children: Toto[]
}
toto.ts
import { Tata } from './tata';
import { IToto } from './itoto';
export class Toto implements IToto{
children: Toto[] = [];
constructor(hasChildren: boolean = false) {
...
}
}
itoto.ts
export interface IToto {
children: Toto[]
}
See also Circular dependency injection angular 2