Moh*_*med 2 angular-module ionic2 ionic3 angular
我在这里经历过SO问题.但我无法得到这个错误试图建议的内容.请帮我解决这个问题.
最后,HIGHER MODULE意味着哪个模块.因为我是新手,所以这就是为什么不正确.
mycode的:
app.module.ts
@NgModule({
declarations: [
MyApp,
UsersPage,
ReposPage,
OrganisationsPage,
UserDetailsPage,
LoginPage
],
imports: [
BrowserModule,
HttpModule,
IonicModule.forRoot(MyApp),
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
LoginPage,
UsersPage,
ReposPage,
OrganisationsPage,
UserDetailsPage,
],
Run Code Online (Sandbox Code Playgroud)
Login.module.ts
import { NgModule } from '@angular/core';
import { IonicPageModule,IonicPage } from 'ionic-angular';
import { LoginPage } from './login';
//import { IonicPage } from 'ionic-angular';
@IonicPage()
@NgModule({
declarations: [
LoginPage,
],
imports: [
IonicPageModule.forChild(LoginPage),
],
entryComponents: [
LoginPage
],
exports: [
LoginPage
]
})
export class LoginPageModule {}
Run Code Online (Sandbox Code Playgroud)
根据您的评论更新的代码
app.module.ts
import { Component } from '@angular/core';
import { NavController, AlertController, LoadingController, Loading, IonicPage } from 'ionic-angular';
import { AuthService } from '../../providers/auth-service';
@IonicPage()
@Component({
selector: 'page-login',
templateUrl: 'login.html',
})
export class LoginPage {
loading: Loading;
registerCredentials = { email: '', password: '' };
constructor(private nav: NavController, private auth: AuthService, private alertCtrl: AlertController, private loadingCtrl: LoadingController) { }
public createAccount() {
this.nav.push('RegisterPage');
}
public login() {
this.showLoading()
this.auth.login(this.registerCredentials).subscribe(allowed => {
console.log(allowed)
if (allowed) {
this.nav.setRoot('HomePage');
} else {
this.showError("Access Denied");
}
},
error => {
this.showError(error);
});
}
showLoading() {
this.loading = this.loadingCtrl.create({
content: 'Please wait...',
dismissOnPageChange: true
});
this.loading.present();
}
showError(text) {
this.loading.dismiss();
let alert = this.alertCtrl.create({
title: 'Fail',
subTitle: text,
buttons: ['OK']
});
alert.present(prompt);
}
}
Run Code Online (Sandbox Code Playgroud)
login.module.ts
import { NgModule } from '@angular/core';
import { IonicPageModule,IonicPage } from 'ionic-angular';
import { LoginPage } from './login';
//import { IonicPage } from 'ionic-angular';
@NgModule({
declarations: [
LoginPage,
],
imports: [
IonicPageModule.forChild(LoginPage),
],
entryComponents: [
LoginPage
],
exports: [
LoginPage
]
})
export class LoginPageModule {}
Run Code Online (Sandbox Code Playgroud)
login.ts
import { Component } from '@angular/core';
import { NavController, AlertController, LoadingController, Loading, IonicPage } from 'ionic-angular';
import { AuthService } from '../../providers/auth-service';
@IonicPage()
@Component({
selector: 'page-login',
templateUrl: 'login.html',
})
export class LoginPage {
loading: Loading;
registerCredentials = { email: '', password: '' };
constructor(private nav: NavController, private auth: AuthService, private alertCtrl: AlertController, private loadingCtrl: LoadingController) { }
public createAccount() {
this.nav.push('RegisterPage');
}
public login() {
this.showLoading()
this.auth.login(this.registerCredentials).subscribe(allowed => {
console.log(allowed)
if (allowed) {
this.nav.setRoot('HomePage');
} else {
this.showError("Access Denied");
}
},
error => {
this.showError(error);
});
}
showLoading() {
this.loading = this.loadingCtrl.create({
content: 'Please wait...',
dismissOnPageChange: true
});
this.loading.present();
}
showError(text) {
this.loading.dismiss();
let alert = this.alertCtrl.create({
title: 'Fail',
subTitle: text,
buttons: ['OK']
});
alert.present(prompt);
}
}
Run Code Online (Sandbox Code Playgroud)
我假设你正在使用Ionic的Lazy Load功能.这个错误的含义是,你在(文件)和中包含了两者LoginPage的declarations数组.NgModuleAppModuleapp.module.tsLoginPageModule
为了解决它,删除LoginPage声明AppModule,如果你需要使用LoginPage应用程序中的某个地方(例如,如果你想推送那个页面),使用名称但作为字符串,如下所示:
// Somewhere in your app
this.navCtrl.push('LoginPage'); // <- The name of the page is used as a string
Run Code Online (Sandbox Code Playgroud)
由于页面的名称现在是一个字符串,你将不需要导入LoginPage了
// import { LoginPage } from '/path/to/login-page.ts'; <- You won't need to do this anymore
Run Code Online (Sandbox Code Playgroud)
UPDATE
就像你在文档中看到的那样(感谢@suraj),请检查你是否正在创建这样的模块LoginPage:
@NgModule({
declarations: [
MyPage
],
imports: [
IonicPageModule.forChild(MyPage)
],
entryComponents: [
MyPage
]
})
export class MyPageModule {}
Run Code Online (Sandbox Code Playgroud)
并检查您是否将@IonicPage()装饰器添加到页面:
// Ionic
import { IonicPage } from 'ionic-angular';
@IonicPage()
@Component({...})
export class MyPage {}
Run Code Online (Sandbox Code Playgroud)