Ionic 2使用另一个类的函数

时间:2017-03-13 01:30:44

标签: angular typescript ionic2

我试图在我的home.ts中使用来自camera.ts的函数takePicture(),但是我不知道怎么做,我遇到了这个错误./TabsPage类TabsPage中的错误 - 由:No CameraPage的提供者!任何帮助都会非常感激,因为我几天前才开始学习这门语言

home.ts

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import {NavParams} from 'ionic-angular';
import { CameraPage } from '../../pages/camera/camera';

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

 constructor(public navCtrl: NavController,public navParams: NavParams,      private camera: CameraPage) {

}

 goCam(){

this.camera.takePicture();


}

}

camera.ts

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


@Component({

templateUrl: 'camera.html'
})
export class CameraPage {
public base64Image: string;
constructor(public navCtrl: NavController) {


 }

takePicture(){
 Camera.getPicture({
   destinationType: Camera.DestinationType.DATA_URL,
   targetWidth: 1000,
   targetHeight: 1000
 }).then((imageData) => {
   // imageData is a base64 encoded string
   this.base64Image = "data:image/jpeg;base64," + imageData;
 }, (err) => {
   console.log(err);
  });
}

 ionViewWillEnter(){
  this.takePicture();
}

 }

tabs.ts

    import { Component } from '@angular/core';

import { HomePage } from '../home/home';
import { CameraPage } from '../camera/camera';
import { ContactPage } from '../contact/contact';

@Component({
  templateUrl: 'tabs.html'
})
export class TabsPage {
  // this tells the tabs component which Pages
  // should be each tab's root Page
  tab1Root: any = HomePage;
  tab2Root: any = CameraPage;
  tab3Root: any = ContactPage;

  constructor() {

  }
}

1 个答案:

答案 0 :(得分:3)

你不能将一个页面传递给另一个页面,就像你可以提供者一样(基本上在构造函数中实例化它)

您需要构建提供者/服务类(即camera.service.ts)以提供服务方法takePicture。然后两个页面都可以使用该功能。理想情况下,页面不应保持任何跨页状态。

您看到的具体错误是因为所有提供商都需要在app.module.ts部分的providers下显示。 Ionic正在尝试在CameraPage中声明的提供程序中搜索app.module.ts但无法找到它。