0
votes

MAT_DIALOG_DATA: ERREUR: INJECT () doit être appelée à partir d'une erreur contextuelle d'injection: injecter () doit être appelée à partir d'un contexte d'injection

J'ai fait une boîte de dialogue modale de base des tutoriels et je suis un peu coincé, charger mon projet me sert cette erreur: xxx

Je ne sais pas pourquoi le message d'erreur indique des minuscules -J'ai injecte () au lieu de capitale-i @inject, que j'appelle dans le constructeur xxx

toutes les sujets d'aide similaires disent à m'assurer que j'utilise capital-i @Iject au lieu d'injecter, ce que je fais. Cependant, j'ai vu une suggestion d'importer injjectez de "@ angular / noyau / test" au lieu de "@ angular / noyau", ce que je ne pense pas est possible?

Toute aide serait appréciée, je «Je n'ai jamais été coincé tant de fois sur un projet World Bonjour auparavant.

Nouveau:

D'accord, je pense que j'ai rempli toutes les exigences, mais je vois toujours la même erreur. Ceci est mon app.Module.ts: xxx

et mon fichier term.conent censé lancer la boîte de dialogue Terminal xxx


4 commentaires

Essayez de supprimer la ngmodule à partir des fichiers de composants et n'oubliez pas non plus de supprimer toutes les importations qui sont liées (juste pour vous sauver un peu d'espace - pas critique cependant)


Comme je constate que vous n'édistissez pas de données, vous pouvez également supprimer l'injection de la déclaration dans la Termdialog. Ce n'est pas obligatoire.


Donc, ce ne sont que des changements cosmétiques, non? Comment puis-je résoudre le problème "injecter du contexte d'injection"?


Je pense qu'il a quelque chose à faire avec le sélecteur et le templaceur dans la composante Termdialog. Permettez-moi de confirmer quels changements sont nécessaires.


3 Réponses :


1
votes

pour un Mat-dialogue Pour fonctionner comme prévu, nous devons remplir les points ci-dessous.

# 1 Déclarez la boîte de dialogue Composant dans son module correspondant . xxx

# 2 Invoquez la boîte de dialogue avec la variable qui est de type matdialog à partir du composant parent. xxx

# 3 déclarer dialogref sur le composant de la boîte de dialogue pour accéder à ses méthodes. xxx

# 4 déclarer @Inject sur le composant de la boîte de dialogue si Vous souhaitez transmettre des données du composant parent sur le composant de la boîte de dialogue. xxx

# 5 Déclarez le composant comme EntryComponents dans le module Définition.

ref - https://medium.com/@ppm1988/matdialog-not-displaying-properly-b3cf19ec4

Solution :

Je vois que vous avez pris soin des points 3 et 4. Essayez de résoudre les autres points aussi.

Vous pouvez également souhaiter ajouter animations si vous ne l'avez pas déjà fait.

ref: MATDialog n'apparaît pas

Assurez-vous que l'application est chargée avec le thème CSS .

ref: La boîte de dialogue de matériau angulaire ne s'affiche pas correctement


5 commentaires

D'accord, je pense que j'ai accompli toutes les 5 exigences (j'ai ajouté le dialogueComponce au tableau EntryComponents) mais je vois toujours la même erreur. Édité l'original pour inclure ma classe Term.component et mon fichier APP.MODULE


@BrandonMiller Tout a l'air bien, à l'exception du NGMODULE sur les deux composants. De toute façon Important des packages dans votre App.Module, vous permet de supprimer cette section des deux composants.


Je vois toujours le même comportement.


Laissez-moi le courir à ma fin. Vérifiez dans 30 minutes.


Il n'y a pas de HTML distinct pour Termdialog. Il fait référence au modèle et sélecteur de TermComponent.



0
votes

Il n'y a pas de HTML séparé pour Termdialog. Il fait référence au modèle et sélecteur de TermComponent.

Démo en direct P>

J'ai commenté des déclarations dans le code de démonstration qui n'étaient pas pertinentes pour la solution. P> blockQuote>

animations strong> Ajoutez également BrowserAnimationsModule Code> à l'application.Module P>

<link href="https://unpkg.com/@angular/material/core/theming/prebuilt/indigo-pink.css" rel="stylesheet">


0 commentaires

0
votes

D'accord, il s'agit donc de la réponse, il suffit de ne pas utiliser de matdialogs du tout, et il suffit d'injecter simplement le TermdialogComponent HTML dans la boîte de dialogue modale de base à l'aide de la balise Sélecteur de TermdialogComponce

donc j'ai ajouté HTML pour une boîte de dialogue modale à mon terme. composant.html et simplement collé dans xxx

et tout a fonctionné comme prévu sans fin, ajouté des modules / bibliothèques. Que ce soit. Je ne saurai peut-être jamais pourquoi je ne pouvais pas obtenir un Modal Matdialog de base pour fonctionner correctement, mais j'ai fait ma paix avec cela. Mon conseil à personne avec ce même problème est de ne pas utiliser de Matdialogs, il ne vaut pas la peine et l'onglet bizarre Les animations ont l'air drôle de toute façon.

Merci à tout le monde pour leurs réponses et leur temps < / p>


0 commentaires