I'm trying to load dynamically a component in the final release 2.0.0.
Using RC5 I was loading using the following code:
Create a directive to load the controls:
import {
  CheckboxComponent, CheckboxListComponent,DatePickerComponent
} from '../components/';
@Directive({
      selector: '[ctrl-factory]'
    })
    export class ControlFactoryDirective implements OnChanges {
      @Input() model: any;
      constructor(private vcRef: ViewContainerRef, private resolver: ComponentResolver) {
      }
      create(cp) {
        this.resolver.resolveComponent(cp)
          .then(factory => {
            const injector = ReflectiveInjector.fromResolvedProviders([], this.vcRef.parentInjector);
            this.vcRef.createComponent(factory, 0, injector, []);
            let ch = this.vcRef.createComponent(factory, 0, injector, []).instance;
            ch.model = this.model;
        });
      }
      ngOnChanges() {
        if (!this.model) return;
        switch (this.model.type) {
          case 'checkbox':
            this.create(CheckboxComponent);
            break;
          case 'checkboxlist':
            this.create(CheckboxListComponent);
            break;
          case 'datepicker':
            this.create(DatePickerComponent);
            break;
          default:
            break;
        }
      }
    }
Then loaded that directive in my page like this:
<div ctrl-factory *ngFor="let child of page.childrens" [model]="child"></div>
But after updating from rc5 to 2.0.0 final release, the resolver doesn't exist anymore, was replaced by compiler.
I found loads of places showing how to load it using different codes, but all those too complex and I couldn't make it work.
Take this for instance: How can I use/create dynamic template to compile dynamic Component with Angular 2.0?
It looks more specific to that scenario, my one I just need to load the component and set an @Input called model.
One thing when I was trying I had to create dynamically a module for each component, then add the component to it. But then I had issues saying that the component was being set in more than one Module, try to remove in some place an not working.
The major part of the code shown, I get from this link: http://blog.lacolaco.net/post/dynamic-component-creation-in-angular-2-rc-5/
And did a couple of changes.
Update
I manage to make it work, using the following approach:
The create method has been changed to
private create(cp) {
    @NgModule({
      imports: [BrowserModule, ControlsModule],
      declarations: []
    })
    class DynamicModule {}
    this.compiler.compileModuleAndAllComponentsAsync(DynamicModule)
      .then(({componentFactories}) => {
        const compFactory = componentFactories.find(x => x.componentType === cp);
        const injector = ReflectiveInjector.fromResolvedProviders([], this.vcRef.parentInjector);
        const cmpRef = this.vcRef.createComponent(compFactory, 0, injector, []);
        cmpRef.instance.model = this.model;
      });
  }
Most places I've found, set create the Component and set it to the DynamicModule, the issue with that is when you are already declaring that same component in a different module, angular is going to complain about. The solution in my case was to import the my ControlsModule that has all my controls being exported.
 
     
     
    