Angular 2 Передача данных в компонент при динамическом добавлении компонента

Я динамически добавил компонент нажатием кнопки.

Ниже приведен код моего виджета. Простой div с заданным в качестве входных данных свойством color.

Widget.tmpl.html

 div class="{{color}}" (click)="ChangeColor()"

В компоненте Widget я принимаю цвет в качестве входных данных. Этот компонент работает нормально, когда я добавляю его вручную. Но сейчас я пытаюсь динамически добавить компонент, а также необходимо передать значение цвета в компонент виджета.

Ниже приведен код в app.component.ts, где я вызываю addItem () при нажатии кнопки.

app.component.ts

export class AppComponent  {
  @ViewChild('placeholder', {read: ViewContainerRef}) viewContainerRef;
  private componentFactory: ComponentFactory<any>;

  constructor(componentFactoryResolver: ComponentFactoryResolver, compiler: Compiler) {
    this.componentFactory = componentFactoryResolver.resolveComponentFactory(MyAppComponent);

  }

  addItem () {
   this.viewContainerRef.createComponent(this.componentFactory, 0);
  }

 public  myValue:string = 'red';

 onChange(val: any) { this.myValue = val; } }

В методе addItem () я динамически добавляю свой компонент виджета в мое представление. Компонент добавляется нормально. Но проблема в том, как передать свойство color при динамическом добавлении. Исходя из того, какой цвет я передаю при создании виджета, я хочу, чтобы он отображался красным или зеленым и т. Д. Как связать свойство в этом сценарии?

Вот некоторые из Кодекса:

export class MyAppComponent { 

    @Input() color; 
    @Output('changes') result: EventEmitter<any> = new EventEmitter(); 

    public constructor() { 
    }

    ChangeColor() {
        this.ToggleColor();
        this.result.emit(this.color);// Emitting the color to the parent.        
    }

    ToggleColor() {
        if (this.color == "red")
            this.color = "blue";
        else
            this.color = "red";
    }
}

В приведенном выше коде я излучаю свой цвет в родительский app.component.ts, но так как я динамически добавил компонент виджета, я не знаю, где добавить этот код (changes) = "onChange ($ event)". Я попытался добавить этот код в div, как показано ниже:

<div class="{{color}}" (click)="ChangeColor()" (changes)="onChange($event)"></div>

Но это не работает.

Ответы на вопрос(1)

Ваш ответ на вопрос