2016-11-03 38 views
1
其他页面

我有一个组件ProcessStep有自己的tshtml文件:ionic2 - 组件到

import { Component } from '@angular/core'; 
import { NavController } from 'ionic-angular'; 

@Component({ 
    selector: 'page-process-step', 
    templateUrl: 'process-step.html' 
}) 
export class ProcessStep { 
totalsteps:number; 
steparray:Array<boolean>; 
currentstep = 1; 

    constructor(public navCtrl: NavController) {} 

    ionViewDidLoad() { 
    console.log('Hello ProcessStep Page'); 
    } 
    populateStep(n:number){ 
    for(var i =1; i<=n ; i++){ 
     this.steparray.push(false); 
    } 
    } 

} 

ProcessStep与不同step值多少页被使用。当我打电话populateStep()从其他页:

import { Component } from '@angular/core'; 
import { NavController } from 'ionic-angular'; 
import { ProcessStep } from '../process-step/process-step'; 

@Component({ 
    selector: 'page-login', 
    templateUrl: 'login.html' 
}) 
export class Login { 
    constructor(public navCtrl: NavController, 
       public modalCtrl:ModalController, 
       public loadingCtrl:LoadingController, 
       private processstep:ProcessStep 
      ) { 
       processstep.populateStep(5);///<-- give error 
       } 

我得到了一个错误:

EXCEPTION: Error in ./Login class Login_Host - inline template:0:0 caused by: No provider for ProcessStep!

我如何准备ProcessStep供应商?

+0

我加入'@ NgModule.providers'后得到新的错误:>无提供NavController! – sooon

+0

如何使用共享服务?与供应商相同吗? 'ProcessStep'是一个包含少量定制的视图组件。我遵循@huiting的答案,它的工作原理。但是,由于某些原因'ngFor'不起作用。 – sooon

回答

2

如果ProcessStep是由其他组件使用的组件,你应该得到它的参考与@ViewChild

import { ViewChild, AfterViewInit } from '@angular/core'; 

class Login implements AfterViewInit { 
    @ViewChild(ProcessStep) step: ProcessStep; 

    ngAfterViewInit() { 
    step.populateStep(5); 
    } 
}