Winkel: Pass-Komponente auf eine Komponente

Habe ich dieses kleine gridComponent:

@Component({
    selector: 'moving-grid',
    templateUrl: './grid.component.html',
    styleUrls: ['./grid.component.css']
})
  export class GridComponent {
     @Input('widgets') extComponents: Array<Component>;
  }

Und eine zweite testComponent

@Component({
  selector: 'test',
  template: `
    <div #content>I say hello<li>i</li><li>u</li><button (click)="test()">click me</button> world</div>
  `
})

export class TestComponent {
  @ViewChild('content') content: HTMLElement;

  getContent() {
    return this.content;
  }
  test() {
    console.log("test");
  }
}

Versuche jetzt, übergeben Sie mehrere Instanzen von testComponent der gridComponent. Deshalb habe ich eine Dritte Komponente, die aussieht wie diese:

template: `
        <moving-grid [widgets]="[z1,z2]"> 
          <test  class="grid-item-content-001" #z1></test>
          <test  class="grid-item-content-002" #z2></test>
        </moving-grid>
      `

Bis zu diesem Punkt funktioniert alles wie erwartet. Aber wie kann ich das Rendern der Komponenten von @Input in die gridComponent?
Mein Erster Ansatz war es zu erklären, @ViewChild in der testComponent und senden Sie es mit einem getContent()-Funktion. Aber es wird nicht funktionieren. Kann ich mit der ng-content-Richtlinie, die in irgendeiner Weise oder gibt es eine bessere Lösung?

Den GridComponent sieht wie folgt aus. Ich möchte die Anzeige der Vorlagen von @Input-Komponente in eines der schwarzen Felder. Ist es möglich?

Winkel: Pass-Komponente auf eine Komponente

Vielen Dank für jede Art von Hilfe

InformationsquelleAutor Draftsman | 2017-05-12
Schreibe einen Kommentar