En supposant que nous voulons utiliser un composant à partir d'une bibliothèque dans angular2 (exemple de material2). Le composant d'annotation ressemble à ceci:
@Component({
moduleId: module.id,
selector: 'md-input',
templateUrl: 'input.html',
styleUrls: ['input.css'],
providers: [MD_INPUT_CONTROL_VALUE_ACCESSOR],
host: {'(click)' : 'focus()'}
})
Ce composant est livré avec un "défaut" de la feuille de style, l'entrée".css". Si nous utilisons cette composante dans notre application, nous avons susceptibles de vouloir remplacer/étendre certains du style, sans avoir à les copier et à manipuler le composant lui-même. Comment faire cela?
Solution Possible 1: Définir l'Encapsulation de "ViewEncapsulation.Aucun":
Ce n'est pas vraiment une solution, juste une solution de contournement.
Solution 2: Utilisation de "::de l'ombre" ou "/deep/" dans le CSS:
Fonctionne aussi, mais sa obsolète selon WebComponent spec.
Solution 3: Utiliser le CSS et remplacer le composant CSS:
Fonctionne aussi, mais il viole le shadow DOM concept.
Solution 4: Remplacer directement dans le modèle de composant parent:
Exemple:
<my-cmp [font-size]="100"></my-cmp>
N'est pas vraiment adapté si nous faisons beaucoup de raisons.
Solution 5: Remplacer ou étendre le "@Composante" définition avec un supplément de feuille de style en quelque sorte:
Cela semble être la seule solution correcte (au moins pour moi). Mais je n'ai aucune idée de comment faire cela...
Tous les conseils sur ce point? Peut-être que j'ai quelque chose de mal... Merci.