angular - ionic 2 : custom provider causing "Can' t resolve all parameters"

标签 angular typescript ionic2

我创建了一个测试提供程序,并尝试将其注入(inject)两个页面,以便可以共享数据和方法,但是当我将提供程序添加到页面构造函数时,出现错误,提示“无法解析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');
  }

}

最佳答案

尝试使用forwardRef 。 BookNavigation 服务似乎与某些导入形成了循环依赖。 在角色页面中,

 constructor(public navCtrl: NavController, 
              public navParams: NavParams, 
              public @Inject(forwardRef(() =>BookNavigation)bookNavigation: BookNavigation) {}

关于angular - ionic 2 : custom provider causing "Can' t resolve all parameters",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42914044/

相关文章:

angular - 检查用户是否仍在 angularfire2 中通过身份验证

css - 仅使用 css 或 ngClass 更改点击时的图标

javascript - 单元测试 Typescript 装饰器

reactjs - 覆盖高阶组件中的 prop 时的泛型推理

javascript - webpack.config.js 是否已从 Ionic 2 RC3 中删除

css - ng-select Angular2面板透明

javascript - ng build --prod 的 javascript 加载问题

angular - 无法更改 Ionic2 中 ionic 标题的背景颜色

android - 数字键盘 Ioinc2

node.js - POST 请求将空值插入 MS SQL 数据库