উত্তর:
- মডিউল প্যারামিটার ব্যবহার করে মডিউল উল্লেখ করুন। উদাহরণস্বরূপ, যদি মূল মডিউলটি 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 টি মডিউল পেয়েছে।
এখানে যেমন বলা হয়েছে , তারা এটিকে এমন পরিস্থিতিতে স্থির করেছে যেখানে রুট এসসিআর / অ্যাপ্লিকেশন ফোল্ডারে যতক্ষণ না আপনার কেবলমাত্র 1 টি মডিউল থাকে, আপনি ঠিক আছেন, সুতরাং সেকেন্ডারি মডিউলগুলি একটি সাব-ফোল্ডারে সরিয়ে নিন।
অন্যথায় আপনি ব্যবহার করতে হবে --module
modules
সাবফোল্ডারে সরানো হয়েছে এবং এখন সব ভাল।
এটা আমার জন্য কাজ করছে
ng g component component-name --skip-import
জিশার উত্তরের একটি সামান্য আপডেট।
আমার প্রকল্পে সমস্ত মডিউল "মডিউল" নামে একটি ফোল্ডারে স্থাপন করা হয়েছিল এবং সমস্ত উপাদানগুলি "src / app" এর অধীনে "উপাদানগুলি" ফোল্ডারে স্থাপন করা হয়েছিল
সুতরাং একটি নির্দিষ্ট পাথের অধীনে একটি উপাদান তৈরি করতে, আমি নিম্নলিখিত সিনট্যাক্সটি ব্যবহার করেছি:
এনজি জিসি উপাদান_পথ / উপাদান_নাম - মডিউল মডিউল_পথ / মডিউল_নাম
উদাহরণ:
এনজি জিসি উপাদান / লগইন - মডিউল মডিউল / অ্যাপ্লিকেশন
কৌণিক সিএলআই: 6.0.8
নোড: 10.4.0
ওএস: লিনাক্স x64
কৌণিক: 6.0.4
যদি একটি বৈশিষ্ট্য মডিউল আছে (যেমন manager.module.ts যেমন "/ ম্যানেজার" সাব-ফোল্ডারে অভ্যন্তরীণ) রাউটিং মডিউল পৃথক NgModule মধ্যে বাহ্যিক (যেমন সঙ্গে ম্যানেজার-routing.module.ts ) ত্রুটি বার্তা:
একাধিক মডিউল মিলছে। নিকটতম মডিউলে উপাদানটি আমদানি করতে এড়াতে স্কিপ-আমদানি বিকল্পটি ব্যবহার করুন।
হাজির হয় না এবং উপাদানটি সঠিকভাবে উত্পন্ন হয় এবং ম্যানেজারআরডিউল.এল মডিউলটিতে যুক্ত হয়।
তবে নামকরণের সম্মেলনটি যত্নবান হোন ! রাউটিং মডিউলটির নাম অবশ্যই " -রউটিং " দিয়ে শেষ হতে হবে !
যদি রাউটিং মডিউলটিকে যেমন ম্যানেজার-রাউটার.মডিউল.টসের মতো কোনও নাম দেওয়া হয় , সিএলআই ত্রুটি বার্তায় অভিযোগ করবে এবং আপনাকে স্বয়ংক্রিয়ভাবে উপাদান আমদানি যুক্ত করার জন্য - মডুল বিকল্প সরবরাহ করবে:
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
।
এই সমস্যাটি সমাধান করার দুটি উপায় রয়েছে।
1) এড়িয়ে যান (কমান্ডে -স্কিপ-ইম্পোর্ট ব্যবহার করে) ডিফল্ট আমদানি করুন এবং উপাদান তৈরি করুন এবং একবার উপাদান তৈরি হয়ে গেলে আপনি যেখানেই এটি ব্যবহার করতে চান তা নিজেই আমদানি করুন।
ng generate component my-component --skip-import
২) মডিউলটির নামটি স্পষ্টভাবে সরবরাহ করুন যেখানে আপনি এটি আমদানি করতে চান
ng generate component my-component --module=my-module.module
যখন অ্যাপ্লিকেশন বা লিবের একাধিক নেস্টেড মডিউল থাকে
myApp
> src
> app
app.module.ts
> routes
> login
> auth
login.module.ts
কৌণিক সিএলআই
ng g component routes/login/auth/my-auth --module=routes/login/login.module.ts
এনআরডাব্লুএল এনএক্স কৌণিক সি এল এল
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
ফোল্ডারের অধীনে একটি নতুন উপাদান তৈরি করার চেষ্টা করার সময় আমি ত্রুটির নীচে নেমে আসছিলাম।
ত্রুটি: একাধিক মডিউল মিলছে। নিকটতম মডিউলে উপাদানটি আমদানি করতে এড়াতে স্কিপ-আমদানি বিকল্পটি ব্যবহার করুন।
আমি নীচে কমান্ড ব্যবহার করেছি এবং একটি ফোল্ডারের অধীনে নতুন উপাদান সফলভাবে তৈরি হয়েছে।
ng g c folderName/my_newComponent ---module ../app
আমার প্রকল্পটি ভিজ্যুয়াল স্টুডিও সম্প্রদায় 2017 ব্যবহার করে তৈরি করা হয়েছিল এবং এটি 3 টি পৃথক মডিউল তৈরি করে: app.browser.module, app.server.module এবং app.shared.module
আমার উপাদানগুলি তৈরি করতে আমি উপরের উত্তরগুলি চেক করেছিলাম এবং আমার মডিউলটি অ্যাপ.সারেড.মডিউল হিসাবে পেয়েছি।
সুতরাং, আমি চালান:
ng g c componentName --module=app.shared.module
অ্যাপ ফোল্ডারের অধীনে যখন একাধিক মডিউল থাকবে তখন নীচের কমান্ডের সাহায্যে একটি উপাদান তৈরি করা ব্যর্থ হবে:
ng generate component New-Component-Name
কারণটি হচ্ছে কৌণিক সিএলআই একাধিক মডিউল সনাক্ত করে এবং কোন মডিউলে উপাদান যুক্ত করতে হবে তা জানে না। সুতরাং, আপনাকে স্পষ্টভাবে উল্লেখ করতে হবে যে কোন মডিউল উপাদান যুক্ত হবে:
ng generate component New-Component-Name --module=ModuleName
এনজি জি কম্পোনেন্ট শিরোনাম - আধুনিক অ্যাপ্লিকেশনটি এটি আমার পক্ষে কাজ
app.routing.module.ts
অত: পর ত্রুটি
কৌণিক সিএলআই: 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
কৌণিক সিএলআই: 8.3.4 নোড: 10.16.3 অ্যাঙ্গুয়ালার: 4.2.5
আমি প্রকল্পটি উত্পন্ন করতে "ডটনেট নতুন কৌণিক" কমান্ডটি ব্যবহার করেছি এবং এটি অ্যাপ ফোল্ডারে 3 টি পৃথক মডিউল তৈরি করেছে (যদিও এনজি নতুন প্রকল্প-নামের একটি সাধারণ পরীক্ষা কেবল একটি একক মডিউল তৈরি করে।
আপনার প্রকল্পের মডিউলগুলি দেখুন এবং যেটি মডিউল আপনি চান তা স্থির করুন - তারপরে নামটি নির্দিষ্ট করুন
ng g c componentName --module=[name-of-your-module]
আপনি মডিউলগুলি সম্পর্কে এখানে আরও পড়তে পারেন: https://angular.io/guide/architecture- মডুলস
আমার ক্ষেত্রে, মনে হয় এনজি আমার পরিবেশের পথে নিবন্ধভুক্ত নয়। আমি এনজিএম কমান্ডগুলি চালনার জন্য এনপিএম রান কমান্ড ব্যবহার করছি। আপনার অতিরিক্ত প্রয়োজন যুক্তিগুলি পাস করার জন্য সচেতন হন - এনপিএম রান স্পেসিফিকেশন অনুসারে।
উদাহরণ: এনপিএম রান এনজিসি উপাদান / সময়সূচি চালানো - - মডুল = অ্যাপ্লিকেশন
বা: npm রান NG জিসি উপাদান / সিডিউলিং - --skip-আমদানি
angular.json
কনফিগারেশনে যখন ছিল তখন আমার এই সতর্কতা ছিল :
"prefix": "app_ng"
যখন "app"
সব পরিবর্তিত পুরোপুরি সূক্ষ্ম কাজ।
আমার মতো কারও জন্য এই তথ্যের আরও একটি টুকরো যুক্ত করার জন্য কেবল যে কোনও একক প্রয়োগ রয়েছে।
আমি আমার অ্যাপ্লিকেশনটি মূল অ্যাপ্লিকেশন.মডিউল.টস এর সাথে সেট আপ করেছিলাম এবং প্রধান অ্যাপ্লিকেশনটির অধীনে এর নিজস্ব ফোল্ডারে আমার রাউটিং মডিউলের সাথে রাউটিং ছিল। আমি আরও কয়েকটি জিনিস পরিষ্কার করেছিলাম যেহেতু আমার আরও কয়েকটি জিনিস আরও ভালভাবে সাজানোর দরকার ছিল। একটি জিনিস আমি করেছি রুটিং.মডিউল.টগুলি মূল ফোল্ডারে সরানো; যেহেতু আমি ফোল্ডারটির একমাত্র ফাইল ছিলাম এটির নিজের ফোল্ডারটির দরকার নেই।
এটি প্রথমে ভাল কাজ করেছে কিন্তু পরের বার আমি একটি নতুন উপাদান তৈরি করার চেষ্টা করেছি (কিছু সময় পরে, ওয়েবস্টর্ম আইডিইয়ের মাধ্যমে) এটি এই বার্তাটির সাথে ব্যর্থ হয়েছিল। এটি পড়ার পরে আমি রাউটিং মডিউলটি আলাদা ফোল্ডারে রেখে দেওয়ার চেষ্টা করেছি এবং এটি আবার কাজ করেছে।
সুতরাং অন্যদের সতর্কতার নোট, আপনার রুট ফোল্ডারে রাউটিং মডিউলটি সরাবেন না! আমি নিশ্চিত যে এটির মোকাবিলার অন্যান্য উপায়ও রয়েছে তবে আমি এটির জন্য এখনকার নিজস্ব ফোল্ডারে এবং আইডিই জেনারেটরটি আমার আগের মতো ব্যবহার করে খুশি।
পদক্ষেপের নিচে হ্যাক হিসাবে আমার জন্য কাজ করেছে।
1) এসআরসি / অ্যাপ্লিকেশন থেকে * .module.ts ফাইলগুলি প্রজেক্টের বাইরে কোনও স্থানে নিয়ে যান।
2) উপাদান তৈরি করতে কমান্ড কার্যকর করুন [ng g c component-name]
3) * .module.ts ফাইলগুলি এসআরসি / অ্যাপ / এ ফিরে যান
ng g c admin/manageUsers ---module ../app