Component injection fails


#1

I’ve got a simple initializer that injects a singleton class into views and components. When I use the component in a template like

{{component-name}}

I am then able to access the injected object from the component.

If I create an instance of the component from code:

comp = App.ComponentNameComponent.create()

the injected object is null.

Does injection only work on components added via a template? Is there something special I need to do to inject into components that I want to manage programmatically?


#2

Ember’s DI system works through an application container. Creating a raw instance of a class will not result in an injection being made.

There is a guide on DI at the Ember website. Creating instances by hand should really not be needed- maybe you can provide more context about your use case.


#3

Thanks, @mixonic, I think I got it figured out.


#4

How about for objects loaded by es6 modules (ember cli)? Does creating a new instance like the following result in the injection being made?

import ComponentNameComponent from 'app/components/component-name';
comp = ComponentNameComponent.create();