Ionic 2“导入组件时无法解析所有参数”

时间:2017-07-07 13:43:12

标签: angular typescript ionic2

我的主组件具有在我的主列表项目上操作的功能。我试图通过另一个名为item-details的组件来访问这些函数。

但是,当我导入HomePage组件并将其添加到item-details.ts的构造函数时,我收到以下错误:

"Runtime Error Can't resolve all parameters for ItemDetailPage: ([object Object], [object Object], ?)".

error image

项-details.ts:

import { Component } from '@angular/core';
import { NavParams, NavController } from 'ionic-angular';
import { HomePage } from '../home/home';

@Component({
  selector: 'page-item-detail',
  templateUrl: 'item-detail.html'
})
export class ItemDetailPage {
  title;
  description;

  constructor(
    public navParams: NavParams,
    public navController: NavController,
    public home: HomePage
  ){

  }

  ionViewDidLoad() {
    this.title = this.navParams.get('item').title;
    this.description = this.navParams.get('item').description;
  }

  deleteItem(item){
    //call deleteItem in home.ts
  }
}

home.ts:

import { Component } from '@angular/core';
import { ModalController, NavController, ViewController } from 'ionic-angular';
import { AddItemPage } from '../add-item/add-item'
import { ItemDetailPage } from '../item-detail/item-detail';
import { Data } from '../../providers/data/data';

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

  public items = [];

  constructor(
    public navCtrl: NavController,
    public modalCtrl: ModalController,
    public dataService: Data
   ) {
    this.dataService.getData().then((todos) => {
      if(todos){
        this.items = JSON.parse(todos);
      }
    });
  }

  ionViewDidLoad(){

  }

  addItem(){
    let addModal = this.modalCtrl.create(AddItemPage);

    addModal.onDidDismiss((item) => {
          if(item){
            this.saveItem(item);
          }
    });
    addModal.present();
  }

  saveItem(item){
    this.items.push(item);
    this.dataService.save(this.items);
  }

  viewItem(item){
    this.navCtrl.push(ItemDetailPage, {
      item: item
    });
  }

  deleteItem(item){
    //code to delete an item from items array
  }
}

这是我的文件结构的图片,以防它相关。 file structure

任何人都可以帮我弄清楚什么是错的以及如何解决它?

1 个答案:

答案 0 :(得分:3)

在您的ItemDetailPage组件中,当确实要求提供服务时,您要求容器解析HomePage组件。

如上所示,在您的ItemDetailPage中,您试图获得对HomePage组件(创建组件,以及ItemDetailPage引用组件)的引用,并且循环参考。那样不行。

当您拥有能够满足您需求的服务时,确实无需解析组件。这就是服务的用途,共享功能。将您的商品管理代码(saveItemaddItemdeleteItem)移出到HomeItemDetail页面均可引用和使用的服务中。< / p>

我希望这对你有所帮助。