'Passing Angular component to another one

I know this has been asked before but I don't understand those answer to be honest. I want to make something simple:

Basically I have this:

<div class="carousel">
  <ul class="carousel__track">
     <li ngFor="let slideHtml of SlidesHTML?" class="carousel__slide">
       **THIS IS ACTUALLY WHERE I WANT TO PASS ANOTHER HTML COMPONENT**
       i.e: <app-slideHtml>
    </li>
   </ul>
</div>

I want to achieve that basically, but I don't know if I can go with @Input() html or if I need to use ng-content for that. What do I need to put in the .ts file?

Edit: I'm using ngFor directive in the li element, so I can display actually all the slides. I don't know if that's even possible, I just wanted to see If I can actually achieve that.



Solution 1:[1]

Yes you can

<li *ngFor="let slide of slides" class="carousel__slide">
    <!-- Rename inputName by the actual input name you want-->
    <app-slideHtml [inputName]="slide.someData"></app-slideHtml>
</li>

Where inputName is the name of the @Input in app-slideHtml and someData an attribute of slide.

In app-slideHtml.component.ts

@Input() inputName: any; // Rename 'inputName' by the actual input name you want

You can pass the whole object instead of some attributes by passing slide to the input.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Sebastien Servouze