web-dev-qa-db-fra.com

Routeur Angular2: impossible de trouver la sortie principale pour charger «HomeComponent»

essayé de passer au nouveau routeur comme dans la version "@ angular/router": "3.0.0-beta.2" en combinaison avec "@ angular/*": "2.0.0-rc.4", en suivant les documents officiels sur le ComponentRouter.

Cependant, je rencontre un problème lorsque j'essaie de charger mon application avec le composant par défaut HomeComponent:

Cannot find primary outlet to load 'HomeComponent'

Il semble que cela ait à voir avec l'utilisation de templateUrl et d'un fichier html externe au lieu d'utiliser le style de modèle en ligne.

HomeComponent n'est initialement pas affiché dans Window et l'erreur est imprimée sur la console. Cependant, lorsque j'utilise le lien vers le composant Home, il s'affiche de seconde main.

Dès que je change de

templateUrl: 'home.html'

à

template: '<router-outlet></router-outlet>'

erreur a disparu, HomeComponent est affiché et le routage fonctionne comme prévu.

Est-ce un problème connu? Cela fonctionne-t-il pour quelqu'un qui utilise templateUrl? Y a-t-il quelque chose que je dois respecter pour que cela fonctionne?

18
Thorsten Viel

Le problème était qu'en raison d'un écran de chargement d'application, le <router-outlet></router-outlet> n'existait pas encore parfois, en raison d'une condition de concurrence. Si vous devez masquer la partie html contenant la sortie, utilisez [hidden] au lieu de *ngIf, pour garantir que la prise est toujours dans le DOM et qu'elle n'est pas supprimée conditionnellement.

27
Thorsten Viel