web-dev-qa-db-fra.com

Existe-t-il un moyen d'utiliser css dans ng-content à l'intérieur d'un composant Angular2?

J'ai essayé d'inclure l'élément CSS pour les enfants inclus dans un composant via ng-content. Il semble qu'il ne soit pas encore implémenté dans Angular 2 ou peut-être que quelqu'un a une solution sauf pour mettre css dans une feuille de style générale?

app.component.ts

<comp-parent>
  <comp-child></comp-child>
</comp-parent>

compParent.component.html

<div class="wrapper">
  <ng-content></ng-content>
</div>

compParent.component.css

.wrapper > comp-child {
   margin-right: 5px; <-- Not applied !!!
}
9
J.BizMai

Vous pouvez utiliser /deep/ (obsolète) ou >>> ou ::ng-deep sélecteur:

https://angular.io/guide/component-styles#deprecated-deep--and-ng-deep

Par exemple.:

.wrapper ::ng-deep comp-child { ... }

Notez que >>> semble ne pas fonctionner pour les projets basés sur angular-cli.

6
Vilmantas Baranauskas

Appliquer des classes au html qui va être rendu.

 app.component.ts
  <comp-parent>
    <comp-child></comp-child>
  </comp-parent> 

@Component({

    selector: 'comp-parent',
    template: `
        <div class="wrapper">
            <ng-content></ng-content>
        </div>
        `          
})
export class CompParent { }   

@Component({
selector: 'comp-child',
template: `
    <div class="comp-child">
        <div>
        </div>
    </div> `,
})

export class CompChild {}


/// In styles.css
.wrapper .comp-child {
    margin-left: 50px;
}

Cela a fonctionné pour moi dans mon projet.

0
Vivek Singh