【发布时间】:2017-08-12 08:20:32
【问题描述】:
我创建了一个测试提供程序,并尝试将其注入两个页面,以便共享数据和方法,但是当我将提供程序添加到页面构造函数时,我收到一个错误,提示“无法解析CharacterPage 的所有参数:(NavController, NavParams, ?)"。
Ionic Framework: 2.0.1
Ionic Native: 2.4.1
Ionic App Scripts: 1.1.0
Angular Core: 2.2.1
Angular Compiler CLI: 2.2.1
Node: 6.9.4
OS Platform: Windows 10
Navigator Platform: Win32
app.module.ts
import { NgModule, ErrorHandler } from '@angular/core';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { Storage } from '@ionic/storage';
import { MyApp } from './app.component';
import { BookNavigation } from '../providers/book-navigation';
@NgModule({
declarations: [ //STUFF ],
imports: [ IonicModule.forRoot(MyApp) ],
bootstrap: [IonicApp],
entryComponents: [ //STUFF ],
providers: [
{
provide: ErrorHandler,
useClass: IonicErrorHandler,
},
Storage,
BookNavigation,
]
})
export class AppModule {}
app.components.ts
import { Component } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar, Splashscreen } from 'ionic-native';
import { BookNavigation } from '../providers/book-navigation';
import { HomePage } from '../pages/home/home';
@Component({
templateUrl: 'app.html',
providers: [BookNavigation]
})
export class MyApp {
rootPage = HomePage;
constructor(platform: Platform) {
platform.ready().then(() => {
// Okay, so the platform is ready and our plugins are available.
// Here you can do any higher level native things you might need.
StatusBar.styleDefault();
Splashscreen.hide();
});
}
characterPage.ts
import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import { BookNavigation } from '../../providers/book-navigation';
@Component({
selector: 'page-character',
templateUrl: 'page.html'
})
export class CharacterPage {
constructor(public navCtrl: NavController,
public navParams: NavParams,
public bookNavigation: BookNavigation) {}
}
服务提供商
import { Injectable } from '@angular/core';
import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import { Storage } from '@ionic/storage';
@Injectable()
export class BookNavigation {
constructor(public navCtrl: NavController, public navParams: NavParams, public storage:Storage) {
console.log('Hello BookNavigation Provider');
}
}
【问题讨论】:
-
可以去掉BookNavigation类的构造函数中的
navCtrl和navParams参数吗?您在提供者/服务中不需要这个。 -
您在
CharacterPage中有错误。这里看不到它的代码 -
@alltej 不,我无法删除它们,因为图书导航具有让我浏览几页的所有功能。我还必须保留存储引用,因为我正在从本地存储中加载一些值。
-
@suraj CharachterPage 是这里的页面,我也更改了问题中的名称
-
" 图书导航具有让我浏览几页的所有功能。"那么你是在 BookNavigation 中导入 CharacterPage 吗?
标签: angular typescript ionic2