Lors de la première entrée dans ma route /home, mes boutons de navigation n'obtiennent pas le style matériel, la longue chaîne de styles pour .mat-button incluant min-width : 88px (j'ai trouvé que c'était une très bonne clé de recherche). Le style est inclus dans vendor.bundle. Il reçoit beaucoup d'autres styles, comme flex-layout, etc.
Lorsque je l'affiche dans la console de Chrome, la feuille de style n'est pas listée parmi les styles applicables à l'élément. Lorsque j'affiche le DOM (sous elements->head), la feuille vendor.bundle.js n'est pas listée parmi les styles chargés ! Elle est chargée lorsque je navigue vers /login et y reste. Après avoir comparé home.module et login.module, je ne trouve aucun import dans ce dernier mais pas dans le premier (autre que le module de routage et les composants privés des deux modules).
Ce qui est étrange : cela n'arrive qu'à la route /home lors de l'entrée initiale. Toutes les autres routes (comme /login -- /home et /login n'ont pas de garde-route) peuvent voir le style matériel (avec des boutons plus larges d'une largeur minimale de 88px, etc). Plus curieusement, si je navigue vers n'importe quelle route et que je retourne à /home, les styles de matériaux réapparaissent. Le seul cas où ils n'apparaissent pas est lorsque je tape l'URL /home dans le navigateur.
Notez que les boutons de navigation font partie de mon app.conponent, parent de home.component. Je n'ai aucune idée de la raison pour laquelle la navigation initiale vers /home aurait pu modifier le style de app.component.
La trace réseau montre qu'après avoir chargé /home, rien d'autre ne se charge lorsque je passe à /login et que je reviens à /home.
config:
@angular/cli: 1.4.4
@angular/core: 4.4.4
@angular/material: 2.0.0-beta.11
Les 88px que j'ai mentionnés se trouvent à de nombreux endroits, notamment à la ligne 3744 de material/bundle/material.umd.js.
MdButton.decorators = [...
Je n'ai aucune idée de la façon dont je pourrais déboguer ce problème, cela me rend fou.