উপাদানটি 2 মডিউল ঘোষণার অংশ


117

আমি একটি আয়নিক 2 অ্যাপ্লিকেশন তৈরি করার চেষ্টা করি। আমি যখন আয়নিক পরিবেশনার সাথে ব্রাউজারে অ্যাপটি চেষ্টা করি বা এটি একটি এমুলেটরটিতে চালু করি সবকিছু ঠিকঠাক কাজ করে।

তবে আমি যখন এটি নির্মাণের চেষ্টা করি তখনই ত্রুটি

ionic-app-script tast: "build"
Error Type AddEvent in "PATH"/add.event.ts is part of the declarations of 2 modules: AppModule in "PATH"/app.modules.ts and AddEvent in "PATH"/add-event.module.ts.
Please consider moving AddEvent in "PATH"/add-event.ts to a higher module that imports AppModule in "PATH"/app.module.ts and AddEventModule.
You can also creat a new NgModule that exports and includes AddEvent then import that NgModule in AppModule and AddEventModule

আমার AppModule হয়

import { NgModule, ErrorHandler } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { AngularFireModule } from 'angularfire2';
import { MyApp } from './app.component';
import { Eventdata } from '../providers/eventdata';
import { AuthProvider } from '../providers/auth-provider';
import { HttpModule } from '@angular/http';

import { HomePage } from '../pages/home/home';
import { Login } from '../pages/login/login';
import { Register } from '../pages/register/register';
import { AddEvent } from '../pages/add-event/add-event';
import { EventDetails } from '../pages/event-details/event-details';

import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';


@NgModule({
  declarations: [
    MyApp,
    HomePage,
    Login,
    Register,
    AddEvent,
    EventDetails

  ],
  imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp),
    HttpModule,
    AngularFireModule.initializeApp(config)
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    HomePage,
    Login,
    Register,
    AddEvent,
    EventDetails
  ],
  providers: [
    StatusBar,
    SplashScreen,
    {provide: ErrorHandler, useClass: IonicErrorHandler}, Eventdata, AuthProvider
  ]
})
export class AppModule {}

এবং আমার অ্যাড ইভেন্ট.মডিউল.এসটি হয়

import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { AddEvent } from './add-event';

@NgModule({
  declarations: [
    AddEvent,
  ],
  imports: [
    IonicPageModule.forChild(AddEvent),
  ],
  exports: [
    AddEvent
  ]
})
export class AddEventModule {}

আমি বুঝতে পারি যে আমাকে একটি ঘোষণার অপসারণ করতে হবে, তবে কীভাবে তা আমি জানি না।

আমি যদি অ্যাপমোডুল থেকে ঘোষণাটি সরিয়ে ফেলি তবে আমি একটি ত্রুটি পেয়েছি যে লগইন পৃষ্ঠাটি পাওয়া যায়নি, আয়নিক পরিবেশন চালানোর সময়

উত্তর:


192

থেকে ঘোষণাটি সরিয়ে ফেলুন AppModule, তবে AppModuleআপনার আমদানি করার জন্য কনফিগারেশনটি আপডেট করুন AddEventModule

.....
import { AddEventModule } from './add-event.module';  // <-- don't forget to import the AddEventModule class

@NgModule({
  declarations: [
    MyApp,
    HomePage,
    Login,
    Register,
    //AddEvent,  <--- remove this
    EventDetails

  ],
  imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp),
    HttpModule,
    AngularFireModule.initializeApp(config),
    AddEventModule,  // <--- add this import here
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    HomePage,
    Login,
    Register,
    AddEvent,
    EventDetails
  ],
  providers: [
    StatusBar,
    SplashScreen,
    {provide: ErrorHandler, useClass: IonicErrorHandler}, Eventdata, AuthProvider
  ]
})
export class AppModule {}

এছাড়াও,

নোট করুন যে আপনি যদি সেই মডিউলটির বাইরে ব্যবহার করতে চান তবে আপনার উপাদানটি AddEventModuleরফতানি করা গুরুত্বপূর্ণ AddEvent। ভাগ্যক্রমে, আপনি ইতিমধ্যে এটি কনফিগার করেছেন, তবে এটি বাদ দেওয়া থাকলে, আপনি যদি AddEventঅন্য কোনও উপাদানতে উপাদানটি ব্যবহার করার চেষ্টা করেন তবে আপনি একটি ত্রুটি পেয়েছেন wouldAppModule


আরে আপনার উত্তরের জন্য ধন্যবাদ, আমাকে কি আমার আমদানিগুলি '../pages/add-event/add-event.module' থেকে 'Eএডএভেন্টমোডুল}' তে পরিবর্তন করতে হবে ?? কারণ আমদানি সহ এবং ছাড়া উভয়ই একটি ত্রুটি নিক্ষেপ করা হয়
স্টিভেট্রো

AppModule এ আপনাকে AddEventModule এর জন্য অতিরিক্ত আমদানি অন্তর্ভুক্ত করতে হবে। আমি উত্তরটি আপডেট করব
snorkpete

আমি সবকিছু যুক্ত করে থাকেন ত্রুটি "। ত্রুটি স্ট্যাটিক্যালি প্রতীক মান সমাধানে সম্মুখীন প্রতীক AddModule সমাধানে না সমাধানে অ্যাড-event.module আপেক্ষিক গেল" নিক্ষিপ্ত হয়
Stevetro

1
'অ্যাড-ইভেন্ট.মডিউল.টিস' ফাইলটি কোন ফোল্ডারে রয়েছে?
snorkpete

অ্যাডএভেন্টস এর মতো একই ফোল্ডারে, তাই আমি '' ../pages/add-event/add-event.module 'ব্যবহার করেছি; পৃষ্ঠাটি আয়নিক জি পৃষ্ঠা দ্বারা উত্পাদিত হয়েছিল
স্টিভেট্রো

48

কিছু লোক ব্যবহার করছে Lazy loading এই পৃষ্ঠা জুড়ে হোঁচট খাচ্ছে।

এখানে কি আমি ঠিক করতে করেছিল ভাগ একটি নির্দেশ

  1. একটি নতুন ভাগ করা মডিউল তৈরি করুন

shared.module.ts

import { NgModule, Directive,OnInit, EventEmitter, Output, OnDestroy, Input,ElementRef,Renderer } from '@angular/core';
import { CommonModule } from '@angular/common';

import { SortDirective } from './sort-directive';

@NgModule({
  imports: [
  ],
  declarations: [
  SortDirective
  ],
  exports: [
    SortDirective
  ]
})

export class SharedModule { }

তারপরে অ্যাপ্লিকেশন.মডিউল এবং আপনার অন্যান্য মডিউলগুলিতে

import {SharedModule} from '../directives/shared.module'
...

@NgModule({
   imports: [
       SharedModule
       ....
       ....
 ]
})
export class WhateverModule { }

এটিকে সরাসরি অ্যাপ.মডিউলে যুক্ত করা হচ্ছে না কেন? অথবা হয়ত একটি core.module আপনার app.module থেকে এটা আমদানি করতে যাচ্ছি যদি
দানি

6
এটি নিখুঁত! আমার এটির সাথে একটি যোগ আছে ... আপনার শেয়ারমডুলের আমদানিতে আইওনিক পেজমডিউল.ফোর্চিল্ড (SharedModule) যুক্ত করতে হবে। আমি এটি না করা পর্যন্ত আমি সব ধরণের অদ্ভুত সমস্যা পাচ্ছিলাম।
অ্যাডওয়ে লেলে

17

সমাধান খুব সহজ। এই *.module.tsফাইল এবং মন্তব্য ঘোষণা। আপনার ক্ষেত্রে addevent.module.tsফাইল সন্ধান করুন এবং নীচে একটি লাইন সরান / মন্তব্য করুন:

@NgModule({
  declarations: [
    // AddEvent, <-- Comment or Remove This Line
  ],
  imports: [
    IonicPageModule.forChild(AddEvent),
  ],
})

এই দ্রবণটি আয়নিক-ক্লিমে তৈরি হওয়া পৃষ্ঠাগুলির জন্য আয়নিক 3 এ কাজ করেছিল এবং উভয় ionic serveএবং এ কাজ করেionic cordova build android --prod --release আদেশে করে!

খুশী থেকো...


5

কৌণিক ৪. এই ত্রুটিটি এনজি সার্ভ রান টাইম ক্যাশে ইস্যু হিসাবে বিবেচিত হয়।

কেস: 1 এই ত্রুটিটি ঘটবে, একবার আপনি একটি মডিউলে উপাদানটি আমদানি করুন এবং আবার সাব মডিউলগুলিতে আমদানি ঘটবে।

কেস: 2 একটি স্থানে ভুল জায়গায় আমদানি করুন এবং সরানো মডিউলে সরানো এবং প্রতিস্থাপন করা হবে, সেই সময়টিকে এনজি সার্ভিস ক্যাশে ইস্যু হিসাবে বিবেচনা করবে। প্রকল্পটি থামাতে হবে এবং আবারও কাজ শুরু করুন, এটি প্রত্যাশার মতো কাজ করবে।


মামলা 1 আমার ক্ষেত্রে ইস্যু ছিল, সলভড!
প্রেমের পপটিয়া

5

যদি আপনার পৃষ্ঠাগুলি CLI ব্যবহার করে তৈরি করা হয় তারপর এটির সাথে একটি ফাইল তৈরি করে filename.module.ts তারপর আপনি রেজিস্টার করতে হবে আপনার filename.module.ts app.module.ts ফাইলে আমদানির অ্যারের মধ্যে এবং ঘোষণা অ্যারের মধ্যে যে পেজটি সন্নিবেশ না ।

যেমন।

import { LoginPageModule } from '../login/login.module';


declarations: [
    MyApp,
    LoginPageModule,// remove this and add it below array i.e. imports
],

imports: [
        BrowserModule,
        HttpModule,
        IonicModule.forRoot(MyApp, {
           scrollPadding: false,
           scrollAssist: true,
           autoFocusAssist: false,
           tabsHideOnSubPages:false
        }),
       LoginPageModule,
],

1

আপনি যখন আয়নিক কমান্ডটি চালাবেন তখন এই মডিউলটি স্বয়ংক্রিয়ভাবে যুক্ত হবে। তবে এটি necessery নয়। সুতরাং বিকল্প সমাধান হ'ল প্রকল্প থেকে অ্যাড-ইভেন্ট.মডিউল.টগুলি সরিয়ে ফেলা ।


1

আপনি কেবল এই সমাধানটি চেষ্টা করতে পারেন (আয়নিক 3 এর জন্য)

আমার ক্ষেত্রে, এই ত্রুটিটি ঘটে যখন আমি নিম্নলিখিত কোডটি ব্যবহার করে কোনও পৃষ্ঠা কল করি

 this.navCtrl.push("Login"); // Bug

আমি কেবল নীচের মতের উদ্ধৃতিগুলি সরিয়েছি এবং সেই ফাইলটির উপরে যে পৃষ্ঠাটি আমি ব্যবহার করেছি লগইন পৃষ্ঠাতে আমদানি করেছি imported

this.navCtrl.push (লগইন করুন); // সঠিক

আমি এই মুহুর্তে পার্থক্যটি ব্যাখ্যা করতে পারি না কারণ আমি একজন প্রাথমিক স্তরের বিকাশকারী


5
আপনি আমার বন্ধুটিকে অলস লোডিং বন্ধ করে দিয়েছিলেন এটি গুরুত্বপূর্ণ
জর্জ

1

আয়নিক ৩.6.০ প্রকাশের পরে অয়নিক-সিএলআই ব্যবহার করে উত্পন্ন প্রতিটি পৃষ্ঠা এখন একটি কৌণিক মডিউল। এর অর্থ আপনাকে ফাইলটিতে আপনার আমদানিতে মডিউল যুক্ত করতে হবেsrc/app/app.module.ts

import { BrowserModule } from "@angular/platform-browser";
import { ErrorHandler, NgModule } from "@angular/core";
import { IonicApp, IonicErrorHandler, IonicModule } from "ionic-angular";
import { SplashScreen } from "@ionic-native/splash-screen";
import { StatusBar } from "@ionic-native/status-bar";;

import { MyApp } from "./app.component";
import { HomePage } from "../pages/home/home"; // import the page
import {HomePageModule} from "../pages/home/home.module"; // import the module

@NgModule({
  declarations: [
    MyApp,
  ],
  imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp),
    HomePageModule // declare the module
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    HomePage, // declare the page
  ],
  providers: [
    StatusBar,
    SplashScreen,
    { provide: ErrorHandler, useClass: IonicErrorHandler },
  ]
})
export class AppModule {}

1

এই ত্রুটিটি ছাড়িয়ে যাওয়ার জন্য আপনার অ্যাপ্লিকেশন.মডিউল.টস এর সমস্ত আমদানি সরিয়ে শুরু করা উচিত এবং এর মতো কিছু থাকতে হবে:

            import { BrowserModule } from '@angular/platform-browser';
            import { HttpClientModule } from '@angular/common/http';
            import { ErrorHandler, NgModule } from '@angular/core';
            import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
            import { SplashScreen } from '@ionic-native/splash-screen';
            import { StatusBar } from '@ionic-native/status-bar';

            import { MyApp } from './app.component';


            @NgModule({
              declarations: [
                MyApp
              ],
              imports: [
                BrowserModule,
                HttpClientModule,
                IonicModule.forRoot(MyApp)
              ],
              bootstrap: [IonicApp],
              entryComponents: [
                MyApp
              ],
              providers: [
                StatusBar,
                SplashScreen,
                {provide: ErrorHandler, useClass: IonicErrorHandler}
              ]
            })
            export class AppModule {}

এরপরে আপনার পৃষ্ঠাগুলির মডিউলটি সম্পাদনা করুন:

            import { NgModule } from '@angular/core';
            import { IonicPageModule } from 'ionic-angular';
            import { HomePage } from './home';

            @NgModule({
              declarations: [
                HomePage,
              ],
              imports: [
                IonicPageModule.forChild(HomePage),
              ],
              entryComponents: [HomePage]
            })
            export class HomePageModule {}

তারপরে সমস্ত পৃষ্ঠার উপাদান টীকা দেওয়ার আগে অয়নিক পৃষ্ঠার টীকা যুক্ত করুন:

import { IonicPage } from 'ionic-angular';

@IonicPage()
@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})

তারপরে স্ট্রিং হওয়ার জন্য আপনার রুটপেজ প্রকারটি সম্পাদনা করুন এবং পৃষ্ঠাগুলির আমদানিগুলি সরিয়ে ফেলুন (যদি আপনার অ্যাপ্লিকেশন উপাদানটিতে কোনও থাকে)

rootPage: string = 'HomePage';

তারপরে নেভিগেশন ফাংশনটি এর মতো হওয়া উচিত:

 /**
* Allow navigation to the HomePage for creating a new entry
*
* @public
* @method viewHome
* @return {None}
*/
 viewHome() : void
 {
  this.navCtrl.push('HomePage');
 }

আপনি এই সমাধানের উত্সটি এখানে পেতে পারেন: 2 উপাদানগুলি মডিউল ঘোষণার অংশ onent


1

এটি সমাধান করা - অংশ 2 মডিউল ঘোষণার অংশ

  1. অ্যাপ্লিকেশনে পৃষ্ঠা নাম.মডিউল.এসটি ফাইল সরান
  2. 'আয়নিক-কৌণিক' থেকে আমদানি {আয়নিক অ্যাপ্লিকেশনটি সরান; pagename.ts ফাইল এ
  3. পেজনেম.টি.এস ফাইল থেকে @ আইনিকপেজ () সরান

এবং আয়নিক কর্ডোভা বিল্ড অ্যান্ড্রয়েড - প্রড কমান্ডটি চালান - এটি আমার অ্যাপ্লিকেশনটিতে কাজ করুন Working


1

একই সমস্যা ছিল। মডিউলটির প্রতিটি উপস্থিতি "ঘোষণাপত্রে" তবে অ্যাপমোডুলেলে সরাতে নিশ্চিত করুন।

আমার জন্য কাজ করেছেন।


0

সাধারণ ফিক্স,

আপনার app.module.tsফাইল এবং remove/commentসমস্ত কিছু যা আবদ্ধ হয় সেগুলিতে যান add_eventApp.module.tযেগুলি দ্বারা উত্পাদিত হয় সেগুলির জন্য উপাদানগুলি যুক্ত করার দরকার নেই ionic cliকারণ এটি কলকৃত উপাদানগুলির জন্য একটি পৃথক মডিউল তৈরি করেcomponents.module.ts

এটিতে প্রয়োজনীয় মডিউল উপাদান আমদানি রয়েছে


0

ত্রুটিটি যেহেতু আপনার পৃষ্ঠা / উপাদানটি ইতিমধ্যে অন্য / শিশু পৃষ্ঠা / উপাদান থেকে অপসারণ না করে, যদি পৃষ্ঠা / উপাদানটি ইতিমধ্যে আইওনিক মডিউল ফাইলটি মূলে থেকে মডিউল অ্যাডভেন্টটি সরিয়ে ফেলতে বলে, তবে শেষ পৃষ্ঠায় / উপাদানটি কেবল একটি মডিউল ফাইলে উপস্থিত থাকতে হবে ব্যবহার করা হলে আমদানি করা।

বিশেষত, একাধিক পৃষ্ঠায় প্রয়োজন হলে আপনার অবশ্যই মূল মডিউল যুক্ত করা উচিত এবং নির্দিষ্ট পৃষ্ঠাগুলিতে যদি এটি কেবল একটি পৃষ্ঠায় রাখা হয়।


0

আমি দুর্ঘটনাক্রমে লাইব্রেরির উপাদান হিসাবে একই নামের সাথে আমার নিজস্ব উপাদান তৈরি করেছি

আমি যখন উপাদানটির জন্য লাইব্রেরিটি স্বয়ংক্রিয়ভাবে আমদানি করতে আমার আইডিই ব্যবহার করেছি তখন আমি ভুল লাইব্রেরিটি বেছে নিয়েছিলাম।

অতএব এই ত্রুটিটি অভিযোগ করছিল, আমি আবার ঘোষণা করছি উপাদানটি ।

আমি লাইব্রেরির পরিবর্তে আমার নিজের উপাদানটির কোড থেকে আমদানি করে ঠিক করেছি।

আমি আলাদাভাবে নাম দিয়েও ঠিক করতে পারতাম: অস্পষ্টতা এড়ান।


0

এই পরিস্থিতিতে, একাধিক মডিউলে ব্যবহৃত হচ্ছে এমন সমস্ত উপাদান আমদানিতে অন্য ভাগ করা মডিউল তৈরি করুন।

ভাগ করা উপাদান। যারা উপাদান ঘোষণা। এবং তারপরে অ্যাপমডিউল এবং আপনি যে অ্যাক্সেস করতে চান সেখানে অন্য মডিউলে ভাগ করা মডিউল আমদানি করুন। এটি 100% কাজ করবে, আমি এটি করেছি এবং এটি কাজ করে চলেছি।

@NgModule({
    declarations: [HeaderComponent, NavigatorComponent],
    imports: [
        CommonModule, BrowserModule,
        AppRoutingModule,
        BrowserAnimationsModule,
        FormsModule,
    ] 
})
export class SharedmoduleModule { }
const routes: Routes = [
{
    path: 'Parent-child-relationship',
    children: [
         { path: '', component: HeaderComponent },
         { path: '', component: ParrentChildComponent }
    ]
}];
@NgModule({
    declarations: [ParrentChildComponent, HeaderComponent],
    imports: [ RouterModule.forRoot(routes), CommonModule, SharedmoduleModule ],
    exports: [RouterModule]
})
export class TutorialModule {
}
imports: [
    BrowserModule,
    AppRoutingModule,
    BrowserAnimationsModule,
    FormsModule,
    MatInputModule,
    MatButtonModule,
    MatSelectModule,
    MatIconModule,
    SharedmoduleModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

এই কোডটি
কৌণিকভাবে

-3

আমার একই ত্রুটি ছিল তবে আমি আবিষ্কার করেছি যে আপনি যখন একটি আমদানি করেন AddEventModule, আপনি কোনও AddEventমডিউল আমদানি করতে পারবেন না কারণ এটি এই ক্ষেত্রে ত্রুটি উপস্থাপন করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.