J'obtiens l'erreur suivante dans la console du navigateur lorsque j'essaye d'exécuter mon application Angular 2 RC6:
> Error: Template parse errors: 'header-area' is not a known element:
> 1. If 'header-area' is an Angular component, then verify that it is part of this module.
> 2. If 'header-area' is a Web Component then add "CUSTOM_ELEMENTS_SCHEMA" to the '@NgModule.schema' of this component
> to suppress this message.("
<div class="page-container">
[ERROR->]<header-area></header-area>
<div class="container-fluid">
> "): PlannerComponent@1:2
Je ne comprends pas pourquoi le composant n'est pas trouvé. Mon PlannerModule ressemble à ceci:
@NgModule({
declarations: [
PlannerComponent,
HeaderAreaComponent,
NavbarAreaComponent,
EreignisbarAreaComponent,
GraphAreaComponent,
nvD3
],
imports: [
RouterModule,
CommonModule,
ModalModule
],
bootstrap: [PlannerComponent],
})
export class PlannerModule {}
et pour autant que j'ai compris le concept de modules dans ng2, les parties des modules sont déclarées dans des «déclarations». Pour être complet, voici le PlannerComponent:
@Component({
selector: 'planner',
providers: [CalculationService],
templateUrl: './planner.component.html',
styleUrls: ['./planner.component.styl']
})
export default class PlannerComponent {
}
et le HeaderAreaComponent:
@Component({
selector: 'header-area',
templateUrl: './header-area.component.html',
styleUrls: ['./header-area.component.styl']
})
export default class HeaderAreaComponent {
}
Le <header-area>
-Tag se trouve dans planner.component.html:
<div class="page-container">
<header-area></header-area>
<div class="container-fluid">
<div class="row">...
Est-ce que je me suis trompé?
Mise à jour : code complet
planner.module.ts:
import HeaderAreaComponent from '../header-area/header-area.component';
import NavbarAreaComponent from '../navbar-area/navbar-area.component';
import GraphAreaComponent from '../graph-area/graph-area.component';
import EreignisbarAreaComponent from '../ereignisbar-area/ereignisbar-area.component';
import PlannerComponent from './planner.component';
import {NgModule} from '@angular/core';
import {nvD3} from 'ng2-nvd3';
import {RouterModule} from '@angular/router';
import {CommonModule} from '@angular/common';
import {ModalModule} from 'ng2-bootstrap/ng2-bootstrap';
@NgModule({
declarations: [
PlannerComponent,
HeaderAreaComponent,
NavbarAreaComponent,
EreignisbarAreaComponent,
GraphAreaComponent,
nvD3
],
imports: [
RouterModule,
CommonModule,
ModalModule
],
bootstrap: [PlannerComponent],
})
export class PlannerModule {
// TODO: get rid of the "unused class" warning
}
planner.component.ts
import {Component} from '@angular/core';
import CalculationService from '../_shared/services/calculation.service/calculation.service';
import HeaderAreaComponent from '../header-area/header-area.component';
@Component({
selector: 'planner',
providers: [CalculationService],
templateUrl: './planner.component.html',
styleUrls: ['./planner.component.styl']
})
export default class PlannerComponent {
}
planner.component.html
<div class="page-container">
<header-area></header-area>
<div class="container-fluid">
<div class="row">
<div class="col-xs-2 col-sm-1 sidebar">
<navbar-area></navbar-area>
</div>
<div class="col-xs-10 col-sm-11">
<graph-area></graph-area>
</div>
</div><!--/.row-->
<div class="row">
<div class="col-xs-10 col-sm-11 offset-sm-1">
<ereignisbar-area></ereignisbar-area>
</div>
</div><!--/.row-->
</div><!--/.container-->
</div><!--/.page-container-->
HeaderAreaComponent
sans{}
et les autres avec{}
. Pouvez-vous essayer de les importer de la même manière? (peut-être supprimer ledefault
?){}
, mais j'obtiens le même résultat.Réponses:
J'ai reçu cette erreur lorsque j'ai importé le module A dans le module B, puis j'ai essayé d'utiliser un composant du module A dans le module B.
La solution consiste à déclarer ce composant dans le
exports
tableau.la source
Je l'ai corrigé avec l'aide de la réponse de Sanket et des commentaires.
Ce que vous ne pouviez pas savoir et n'était pas apparent dans le message d'erreur est: J'ai importé le PlannerComponent en tant que @ NgModule.declaration dans mon module d'application (= RootModule).
L'erreur a été corrigée en important le PlannerModule sous le nom @ NgModule.imports .
Avant:
Après:
Merci de votre aide :)
la source
declarations
. Serait-ce vrai?Si vous avez utilisé la définition de composant générée automatiquement par Webclipse, vous constaterez peut-être que le nom du sélecteur est précédé de «app-». Apparemment, il s'agit d'une nouvelle convention lors de la déclaration des sous-composants d'un composant principal de l'application. Vérifiez comment votre sélecteur a été défini dans votre composant si vous avez utilisé «nouveau» - «composant» pour le créer dans Angular IDE. Donc au lieu de mettre
Tu pourrais avoir besoin de
la source
ng
cli.--selector
option, je n'ai pas besoin de préfixerapp-
avec l'étiquette de composant. Ex:ng generate component menu-list --selector 'menu-list'
Je récupère le même problème
<flash-messages></flash-messages>
avec angular 5.Il vous suffit d'ajouter les lignes ci-dessous dans le fichier app.module.ts
NB: j'utilise celui-ci pour les messages flash
la source
Dans votre composant de planificateur , vous devez manquer l'importation HeaderAreaComponent comme ceci-
Assurez-vous également que tous les composants et tuyaux doivent être déclarés via un NgModule .
Voyez si cela aide.
la source
import { BrowserModule } from '@angular/platform-browser';
providers: [CalculationService],
J'étais confronté à ce problème sur Angular 7 et le problème était qu'après la création du module, je n'ai pas exécuté
ng build
. Alors j'ai joué -ng build
ng serve
et cela a fonctionné.
la source
L'erreur venant du test unitaire, lorsque le composant est hors de
<router-outlet>
la page principale de l'application. devrait donc définir le composant dans le fichier de test comme ci-dessous.et doit ensuite ajouter le fichier spec.ts comme ci-dessous.
la source
Une autre cause possible du même message d'erreur est une incompatibilité entre le nom de la balise et le nom du sélecteur. Pour ce cas:
<header-area></header-area>
le nom de la balise doit correspondre exactement'header-area'
à la déclaration du composant:la source
J'ai eu le même problème avec angular RC.6 pour une raison quelconque, il ne permet pas de passer le composant à un autre composant en utilisant des directives comme décorateur de composant au composant parent
Mais si vous importez le composant enfant via le module d'application et l'ajoutez dans le tableau de déclaration, l'erreur disparaît. Il n'y a pas beaucoup d'explication sur pourquoi c'est un problème avec angular rc.6
la source
Quand j'ai eu ce problème, c'était parce que j'utilisais 'templateUrl' au lieu de simplement 'template' dans le décorateur, puisque j'utilise webpack et que j'ai besoin d'utiliser require . Faites juste attention au nom du décorateur, dans mon cas, j'ai généré le code standard à l'aide d'un extrait de code, le décorateur a été créé comme:
mais pour webpack, le décorateur doit être simplement ' template ' PAS ' templateUrl ', comme ceci:
changer cela a résolu le problème pour moi.
voulez en savoir plus sur les deux méthodes? lire cet article sur
template
vstemplateUrl
la source
J'ai eu cette erreur lorsque j'avais un nom de fichier et une classe exportés incompatibles:
nom de fichier: list.component.ts
classe exportée: ListStudentsComponent
Le passage de ListStudentsComponent à ListComponent a résolu mon problème.
la source
J'ai rencontré ce problème exact. Échec: erreurs d'analyse du modèle: 'app-login' n'est pas un élément connu ... avec
ng test
. J'ai essayé toutes les réponses ci-dessus: rien n'a fonctionné.SOLUTION DE TEST NG:
Angular 2 Karma Test 'nom-composant' n'est pas un élément connu
<= J'ai ajouté des déclarations pour les composants incriminés dans
beforEach(.. declarations[])
la app.component.spec.ts .EXEMPLE app.component.spec.ts
la source
J'ai eu le même problème et j'ai résolu en ajoutant le composant (MyComponentToUse) dans le tableau des exportations dans le module où mon composant a été déclaré (ModuleLower). Ensuite, j'importe ModuleLower dans ModuleHigher, donc je peux réutiliser maintenant mon composant (MyComponentToUse) dans ModuleLower et ModuleHigher
la source
J'ai eu le même problème avec Angular 7 lorsque je vais affiner le module de test en déclarant le composant de test. Juste ajouté
schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
comme suit et l'erreur a été résolue.la source
Pour les problèmes futurs. Si vous pensez avoir suivi toutes les bonnes réponses et pourtant, le problème est là.
Essayez d'éteindre et de rallumer le serveur.
J'ai eu le même problème, j'ai suivi toutes les étapes, je n'ai pas pu le résoudre. Éteignez, rallumez et cela a été corrigé.
la source
npm start
(sous l'eaung serve
). Cela aide parfois à résoudre les problèmes. Maintenant, je devais redémarrer entièrement Visual Studio Code.Une erreur de débutant générait le même message d'erreur dans mon cas.
La
app-root
balise n'était pas présente dans index.htmlla source
OnInit
a été automatiquement implémenté sur ma classe tout en utilisant lang new ...
phrase clé sur la CLI angulaire pour générer le nouveau composant. Donc, après avoir supprimé l'implémentation et supprimé la méthode vide qui a été générée, le problème est résolu.la source
Pour moi, le chemin de templateUrl n'était pas correct
J'utilisais
Alors que cela aurait dû être
Erreur idiote mais arrive au début. J'espère que cela aide quelqu'un en détresse.
la source
Réponse tardive pour le fil, mais je suis sûr qu'il y a plus de gens qui peuvent utiliser ces informations expliquées dans une autre perspective.
Dans Ionic, les composants angulaires personnalisés sont organisés sous un module séparé appelé
ComponentsModule
. Lorsque le premier composant est généré en utilisantionic generate component
, avec le composant, ionic génère leComponentsModule
. Tous les composants suivants sont ajoutés au même module, à juste titre.Voici un échantillon
ComponentsModule
Pour utiliser le
ComponentsModule
dans l'application, comme tout autre module angulaire, leComponentsModules
doit être importé dans leAppModule
. Le composant de génération ionique (v 4.12) n'ajoute pas cette étape, il faut donc l'ajouter manuellement.Extrait d'AppModule:
la source
Ok, laissez-moi vous donner les détails du code, comment utiliser le composant d'un autre module.
Par exemple, j'ai le module M2, le module M2 a le composant comp23 et le composant comp2, maintenant je veux utiliser comp23 et comp2 dans app.module, voici comment:
c'est app.module.ts, voir mon commentaire,
c'est le module m2:
Ma recommandation dans le code explique ce que vous devez faire ici.
maintenant dans app.component.html, vous pouvez utiliser
suivre le module d' importation de l'échantillon angular doc
la source