Risposte:
Specificare il modulo usando il parametro --module. Ad esempio, se il modulo principale è app.module.ts, eseguire questo:
ng g c new-component --module app
O se ti trovi in un'altra directory allora
ng g c component-name --module ../
Prova questo: funziona per me
ng generate component componentName --module=app.module
Ciò è causato dal momento che la generazione ha tentato di aggiungere il componente a un modulo, ovvero di aggiungere questa riga
import { MyComponent } from './Components/my-component/my-component.component';
ma ha trovato 2 moduli.
Come indicato qui , l'hanno risolto in una situazione in cui fino a quando nella cartella root src / app hai solo 1 modulo, stai bene, quindi sposta i moduli secondari in una sottocartella.
Altrimenti devi usare --module
modules
sottocartella e ora tutto è a posto.
Funziona per me
ng g component component-name --skip-import
Solo un piccolo aggiornamento alla risposta di Zisha.
Nel mio progetto tutti i moduli sono stati collocati in una cartella denominata "moduli" e tutti i componenti sono collocati nella cartella "componenti" sotto "src / app"
quindi per creare un componente in un percorso specifico, ho usato la sintassi seguente:
di gc componenti_percorso / nome_componente - modulo moduli_percorso / nome_modulo
esempio :
di componenti gc / login - moduli moduli / app
CLI angolare: 6.0.8
Nodo: 10.4.0
OS: linux x64
Angolare: 6.0.4
Nel caso in cui sia presente un modulo funzione (ad es . Manager.module.ts all'interno della sottocartella ad es . "/ Manager") con il modulo di routing esternalizzato nel NgModule separato (ad es. Manager-routing.module.ts ) il messaggio di errore:
Più di un modulo corrisponde. Utilizzare l'opzione skip-import per saltare l'importazione del componente nel modulo più vicino.
non viene visualizzato e il componente viene generato e aggiunto correttamente al modulo manager.module.ts .
MA ATTENZIONE, la convenzione di denominazione! il nome del modulo di routing deve terminare con " -routing "!
Se al modulo di routing viene assegnato un nome come ad esempio manager-router.module.ts , l' interfaccia della riga di comando si lamenterà del messaggio di errore e si aspetterà che l'utente fornisca l'opzione --module per aggiungere automaticamente l'importazione del componente:
ng generate component some-name --module=manager.module.ts
o
ng generate component some-name --skip-import
se si preferisce aggiungere manualmente l'importazione del componente
-
fatto il trucco! Ho avuto lib-name.routing.module.ts
invece di lib-name-routing.module.ts
.
Esistono due modi per risolvere questo problema.
1) Salta (usando --skip-import nel comando) importazione e creazione predefinite del componente e una volta creato il componente importalo manualmente ovunque tu voglia usarlo.
ng generate component my-component --skip-import
2) Fornire esplicitamente il nome del modulo nel punto in cui si desidera importarlo
ng generate component my-component --module=my-module.module
Quando app o lib hanno più moduli nidificati
myApp
> src
> app
app.module.ts
> routes
> login
> auth
login.module.ts
CLI angolare
ng g component routes/login/auth/my-auth --module=routes/login/login.module.ts
NRWL NX Angular CLI
ng g component routes/login/auth/my-auth --project=myApp --module=routes/login/login.module.ts
Risultato
myApp
> src
> app
app.module.ts
> routes
> login
> auth
> my-auth
my-auth.component.ts etc...
login.module.ts
Stavo ottenendo un errore di seguito quando provavo a creare un nuovo componente in una cartella.
errore: più di un modulo corrisponde. Utilizzare l'opzione skip-import per saltare l'importazione del componente nel modulo più vicino.
Ho usato il comando seguente e il nuovo componente è stato creato correttamente in una cartella.
ng g c folderName/my_newComponent ---module ../app
Il mio progetto è stato creato utilizzando Visual Studio Community 2017 e crea 3 moduli separati: app.browser.module, app.server.module e app.shared.module
Per creare i miei componenti ho controllato le risposte sopra e ho trovato il mio modulo come app.shared.module.
Quindi, corro:
ng g c componentName --module=app.shared.module
Quando è presente più di un modulo nella cartella dell'app, la generazione di un componente con il comando seguente non riuscirà:
ng generate component New-Component-Name
Il motivo è che la CLI angolare rileva più moduli e non sa in quale modulo aggiungere il componente. Quindi, è necessario menzionare esplicitamente quale componente del modulo verrà aggiunto:
ng generate component New-Component-Name --module=ModuleName
prova l'intestazione del componente g - l'app per i moduli, funziona per me
app.routing.module.ts
quindi l'errore
CLI angolare: 8.3.1
quando sono presenti più module.ts
file all'interno di un modulo, è necessario specificare per quale file del modulo si sta generando il componente.
ng g c modulefolder/componentname --module=modulename.module
per esempio ho una cartella di moduli condivisa all'interno della quale ho shared.module.ts
e mi material.module.ts
piace
shared
> shared.module.ts
> material.module.ts
e voglio generare sidebar
componente per shared.module.ts
poi eseguirò il seguente comando
ng g c shared/sidebar --module=shared.module
se si desidera esportare il componente, eseguire il comando seguente
ng g c shared/sidebar --module=shared.module --export
CLI angolare: 8.3.4 Nodo: 10.16.3 Angualr: 4.2.5
Ho usato il comando "dotnet new angular" per generare il progetto e ha generato 3 diversi moduli nella cartella dell'app (anche se un semplice test con ng nuovo nome-progetto genera solo un singolo modulo.
vedere i moduli nel progetto e decidere quale modulo si desidera, quindi specificare il nome
ng g c componentName --module=[name-of-your-module]
Puoi leggere di più sui moduli qui: https://angular.io/guide/architecture-modules
Nel mio caso, sembra che ng non sia registrato nel mio percorso di ambiente. Ho usato il comando npm run per eseguire i comandi ng. Prestare attenzione al fine di passare argomenti di cui è necessario un extra, come da specifica npm run.
Esempio: npm esegue ng componenti / pianificazione gc - --module = app
Oppure: npm esegue ng componenti / pianificazione gc - --skip-import
Ho avuto questo avviso quando questo era in angular.json
config:
"prefix": "app_ng"
Quando cambiato in "app"
tutto ha funzionato perfettamente bene.
Solo per aggiungere un'altra informazione a questo per chiunque come me che succede lungo che ha solo una singola applicazione.
Avevo configurato la mia applicazione con l'app.module.ts principale e avevo il routing con il modulo di routing nella sua cartella sotto l'applicazione principale. Sono passato e ho fatto un po 'di "pulizia" poiché avevo alcune altre cose che dovevano essere organizzate meglio. Una cosa che ho fatto è stato spostare routing.module.ts nella cartella principale; dato che era l'unico file nella cartella, ho pensato che non avesse bisogno della sua cartella.
Inizialmente ha funzionato bene, ma la prossima volta che ho provato a generare un nuovo componente (qualche tempo dopo, tramite l'IDE WebStorm) non è riuscito con questo messaggio. Dopo aver letto questo ho provato a rimettere il modulo di routing in una cartella separata e ha funzionato di nuovo.
Quindi nota di avvertimento per gli altri, non spostare il modulo di routing nella cartella principale! Sono sicuro che ci sono anche altri modi per gestirlo, ma per ora sono contento nella sua cartella e usando il generatore IDE come in precedenza.
Come hack, sotto i passaggi, ha funzionato per me.
1) Spostare i file * .module.ts da src / app in una posizione fuori dal progetto.
2) Eseguire il comando per creare il componente [ng g c component-name]
3) Spostare indietro i file * .module.ts su src / app /
ng g c admin/manageUsers ---module ../app