我试图在我的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() {
}
}
答案 0 :(得分:3)
你不能将一个页面传递给另一个页面,就像你可以提供者一样(基本上在构造函数中实例化它)
您需要构建提供者/服务类(即camera.service.ts
)以提供服务方法takePicture
。然后两个页面都可以使用该功能。理想情况下,页面不应保持任何跨页状态。
您看到的具体错误是因为所有提供商都需要在app.module.ts
部分的providers
下显示。 Ionic正在尝试在CameraPage
中声明的提供程序中搜索app.module.ts
但无法找到它。