回答:
--moduleパラメータを使用してモジュールを指定します。たとえば、メインモジュールがapp.module.tsの場合、次を実行します。
ng g c new-component --module app
または、他のディレクトリにいる場合
ng g c component-name --module ../
これを試してください:それは私のために働いています
ng generate component componentName --module=app.module
これは、生成がコンポーネントをモジュールに追加しようとしたため、つまりこの行を追加しようとしたために発生します
import { MyComponent } from './Components/my-component/my-component.component';
2つのモジュールが見つかりました。
ここで述べたように、ルートsrc / appフォルダーにモジュールが1つしかない場合は問題ないので、セカンダリモジュールをサブフォルダーに移動するだけで問題を修正しました。
それ以外の場合は使用する必要があります --module
modules
サブフォルダーに移動しましたが、すべて順調です。
それは私のために働いています
ng g component component-name --skip-import
ジシャの答えのほんの小さな更新。
私のプロジェクトでは、すべてのモジュールが「modules」というフォルダーに配置され、すべてのコンポーネントが「src / app」の下の「components」フォルダーに配置されています
したがって、特定のパスの下にコンポーネントを作成するには、次の構文を使用しました。
ng gc components_path / component_name --module modules_path / module_name
例:
ng gc components / login --module modules / app
Angular CLI:6.0.8
ノード:10.4.0
OS:linux x64
Angular:6.0.4
ルーティングモジュールが別のNgModuleに外部化された機能モジュール(たとえば、「/ manager」サブフォルダー内にmanager.module.ts)がある場合(例:manager-routing.module.ts)エラーメッセージ:
複数のモジュールが一致しています。skip-importオプションを使用して、最も近いモジュールへのコンポーネントのインポートをスキップします。
は表示されず、コンポーネントは適切に生成され、manager.module.tsモジュールに追加されます。
ただし、命名規則には注意してください。ルーティングモジュールの名前は「-routing」で終了する必要があります!
ルーティングモジュールにmanager-router.module.tsなどの名前が付けられている場合、CLIはエラーメッセージを表示し、コンポーネントのインポートを自動的に追加する--moduleオプションを提供することを期待します。
ng generate component some-name --module=manager.module.ts
または
ng generate component some-name --skip-import
コンポーネントのインポートを手動で追加したい場合
-
トリックをしました!のlib-name.routing.module.ts
代わりにしたlib-name-routing.module.ts
。
アプリまたはライブラリに複数のネストされたモジュールがある場合
myApp
> src
> app
app.module.ts
> routes
> login
> auth
login.module.ts
Angular CLI
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
結果
myApp
> src
> app
app.module.ts
> routes
> login
> auth
> my-auth
my-auth.component.ts etc...
login.module.ts
Angular CLI:8.3.1
module.ts
モジュール内に複数のファイルがある場合、コンポーネントを生成するモジュールファイルを指定する必要があります。
ng g c modulefolder/componentname --module=modulename.module
例えばのために、私はモジュールフォルダの内部を共有している私が持っているshared.module.ts
とmaterial.module.ts
、このような
shared
> shared.module.ts
> material.module.ts
そしてsidebar
、shared.module.ts
そのためのコンポーネントを生成したいので、次のコマンドを実行します
ng g c shared/sidebar --module=shared.module
コンポーネントをエクスポートする場合は、次のコマンドを実行します
ng g c shared/sidebar --module=shared.module --export
Angular CLI:8.3.4ノード:10.16.3 Angualr:4.2.5
私が使用し、「DOTNET新しい角度」プロジェクトを生成するコマンドを、として簡単なテストが、それは(appフォルダ内の3つの異なるモジュールを生成した新しいプロジェクト名をNGがちょうど単一のモジュールを生成します。
プロジェクト内のモジュールを表示し、必要なモジュールを決定してから、名前を指定します
ng g c componentName --module=[name-of-your-module]
モジュールの詳細については、https: //angular.io/guide/architecture-modulesをご覧ください。
angular.json
設定にこれがあると、この警告が出ました:
"prefix": "app_ng"
変更すると"app"
、すべて完璧にうまくいきました。
これに加えて、アプリケーションが1つしかない私のような人のために、別の情報を追加します。
メインのapp.module.tsを使用してアプリケーションをセットアップし、メインアプリケーションの下の独自のフォルダーにあるルーティングモジュールを使用してルーティングしました。より整理する必要のある他のいくつかのことがあったので、私は通り抜けていくつかの「クリーンアップ」を行いました。私がしたことの1つは、routing.module.tsをルートフォルダーに移動することでした。それはフォルダー内の唯一のファイルだったので、独自のフォルダーは必要ないと考えました。
これは最初は問題なく動作しましたが、次回(後でWebStorm IDEを介して)新しいコンポーネントを生成しようとすると、このメッセージが表示されて失敗しました。これを読んだ後、ルーティングモジュールを別のフォルダに戻してみましたが、再び機能しました。
他の人への警告に注意してください、ルーティングモジュールをルートフォルダに移動しないでください!これに対処する方法は他にもあると思いますが、今のところは独自のフォルダにあり、以前と同じようにIDEジェネレータを使用して満足しています。
ハックとして、以下の手順でうまくいきました。
1)* .module.tsファイルをsrc / appからプロジェクト外の場所に移動します。
2)コマンドを実行してコンポーネントを作成します [ng g c component-name]
3)* .module.tsファイルをsrc / app /に戻します。
ng g c admin/manageUsers ---module ../app