I have an object that I want to share between my components into an Angular2 app.
Here is the source of the first component:
/* app.component.ts */
// ...imports
import {ConfigService} from './config.service';
@Component({
    selector: 'my-app',
    templateUrl: 'app/templates/app.html',
    directives: [Grid],
    providers: [ConfigService]
})
export class AppComponent {
    public size: number;
    public square: number;
    constructor(_configService: ConfigService) {
        this.size = 16;
        this.square = Math.sqrt(this.size);
        // Here I call the service to put my data
        _configService.setOption('size', this.size);
        _configService.setOption('square', this.square);
    }
}
and the second component:
/* grid.component.ts */
// ...imports
import {ConfigService} from './config.service';
@Component({
    selector: 'grid',
    templateUrl: 'app/templates/grid.html',
    providers: [ConfigService]
})
export class Grid {
    public config;
    public header = [];
    constructor(_configService: ConfigService) {
        // issue is here, the _configService.getConfig() get an empty object 
        // but I had filled it just before
        this.config = _configService.getConfig();
    }
  }
and finally my little service, the ConfigService:
/* config.service.ts */
import {Injectable} from 'angular2/core';
@Injectable()
export class ConfigService {
    private config = {};
    setOption(option, value) {
        this.config[option] = value;
    }
    getConfig() {
        return this.config;
    }
}
My data are not shared, in the grid.component.ts, the _configService.getConfig() line return an empty object, but it is filled just before in the app.component.ts.
I read the docs and tutorials, nothing worked.
What am I missing ?
Thanks
SOLVED
My issue was that I was injecting my ConfigService twice. In the bootstrap of the application and in the file where I'm using it.
I removed the providers setting and its worked !