Angular 离子:提供程序不可解析
我遇到了一个问题,到目前为止我还找不到合适的人选 所以我有一个3页的ionic项目和一个api连接的提供者 Scanner.ts:Angular 离子:提供程序不可解析,angular,cordova,ionic-framework,Angular,Cordova,Ionic Framework,我遇到了一个问题,到目前为止我还找不到合适的人选 所以我有一个3页的ionic项目和一个api连接的提供者 Scanner.ts: import { Component } from '@angular/core'; import { NavController } from 'ionic-angular'; import { QRScanner, QRScannerStatus } from '@ionic-native/qr-scanner'; import { AlertControlle
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { QRScanner, QRScannerStatus } from '@ionic-native/qr-scanner';
import { AlertController } from 'ionic-angular';
import {StorageProvider} from "../../providers/storage/storage";
import {ApiProvider} from "../../providers/api/api";
import {DocsPage} from "../docs/docs";
import {GlobalvarProvider} from "../../providers/globalvar/globalvar";
//https://ionicframework.com/docs/native/native-storage/
@Component({
selector: 'page-scanner',
templateUrl: 'scanner.html'
})
export class ScannerPage {
key : string;
GlobalvarProvider : any = GlobalvarProvider;
constructor(public navCtrl: NavController,
private qrScanner: QRScanner,
private alertCtrl: AlertController,
private storage: StorageProvider,
private api: ApiProvider) {}
public changeToHomePage(){
this.navCtrl.setRoot(DocsPage);
GlobalvarProvider.setPagesConnected();
}
textInput(){
this.api.connectToAPI(this.key);
}
scanner(){
//Testcode: https://ionicframework.com/docs/native/qr-scanner/
this.qrScanner.prepare()
.then((status: QRScannerStatus) => {
if (status.authorized) {
// camera permission was granted
// start scanning
let scanSub = this.qrScanner.scan().subscribe((text: string) => {
//Mit API verbinden
this.api.connectToAPI(text);
this.qrScanner.hide(); // hide camera preview
scanSub.unsubscribe(); // stop scanning
});
// show camera preview
this.qrScanner.show();
// wait for user to scan something, then the observable callback will be called
} else if (status.denied) {
// camera permission was permanently denied
// you must use QRScanner.openSettings() method to guide the user to the settings page
// then they can grant the permission from there
} else {
// permission was denied, but not permanently. You can ask for permission again at a later time.
}
})
.catch((e: any) => console.log('Error is', e));
}
}
如果我在ScannerPage上使用Api提供程序,则不会发生错误,我可以使用Api
虽然在DocsPage上使用APi提供程序,但仍会发生错误
Docs.ts
import { Component } from '@angular/core';
import {NavController, NavParams} from 'ionic-angular';
import { ApiProvider } from "../../providers/api/api";
import {StorageProvider} from "../../providers/storage/storage";
@Component({
selector: 'page-docs',
templateUrl: 'docs.html',
})
export class DocsPage {
items: Array<{title: string}>;
constructor(public navCtrl: NavController,
public navParams: NavParams,
private storage: StorageProvider,
private api : ApiProvider) {
// this.api.updateResources();
this.items =[];
}
doRefresh(refresher) {
refresher.complete();
}
/*itemTapped(event, item) {
// That's right, we're pushing to ourselves!
this.navCtrl.push(HomePage, {
item: item
});
}*/
}
所以我成功了,谢谢你的评论。 问题是,在ApiProvider中,我引用了一个GlobalvarProvider,它正在导入DocsPage.ts,以便能够将其添加到菜单列表中。
删除此引用已消除此错误
能否请您包含易于出错的完整版本的DocsPage.ts
包含完整版本的DocsPage.tsI建议您更新API提供程序,对除锅炉板以外的所有内容进行注释,并查看错误是否消失。然后取消注释,直到发现问题。如果没有看到所有内容,我会认为提供者中有可疑之处。t您的错误消息指的是“SettingsPage”,但您没有显示该页面。您可以显示设置页面吗?您是否在ApiProvider中导入任何页面?
Uncaught Error: Can't resolve all parameters for SettingsPage: ([object Object], [object Object], [object Object], ?).
at syntaxError (compiler.js:466)
at CompileMetadataResolver._getDependenciesMetadata (compiler.js:15547)
at CompileMetadataResolver._getTypeMetadata (compiler.js:15382)
at CompileMetadataResolver.getNonNormalizedDirectiveMetadata (compiler.js:14890)
at CompileMetadataResolver._getEntryComponentMetadata (compiler.js:15695)
at compiler.js:15165
at Array.map (<anonymous>)
at CompileMetadataResolver.getNgModuleMetadata (compiler.js:15165)
at JitCompiler._loadModules (compiler.js:33542)
at JitCompiler._compileModuleAndComponents (compiler.js:33503).
import { BrowserModule } from '@angular/platform-browser';
import { ErrorHandler, NgModule } from '@angular/core';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
import { MyApp } from './app.component';
import { ScannerPage } from '../pages/scanner/scanner';
import { DocsPage } from "../pages/docs/docs";
import { SettingsPage} from "../pages/settings/settings";
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { QRScanner} from "@ionic-native/qr-scanner";
import { IonicStorageModule } from '@ionic/storage';
import { StorageProvider } from '../providers/storage/storage';
import { NativeStorage } from "@ionic-native/native-storage";
import { ApiProvider } from '../providers/api/api';
import { HttpClient, HttpClientModule} from "@angular/common/http";
import { GlobalvarProvider } from '../providers/globalvar/globalvar';
@NgModule({
declarations: [
MyApp,
ScannerPage,
DocsPage,
SettingsPage
],
imports: [
BrowserModule,
HttpClientModule,
IonicStorageModule.forRoot(),
IonicModule.forRoot(MyApp),
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
ScannerPage,
DocsPage,
SettingsPage,
],
providers: [
StatusBar,
SplashScreen,
QRScanner,
NativeStorage,
HttpClient,
{provide: ErrorHandler, useClass: IonicErrorHandler},
StorageProvider,
ApiProvider,
GlobalvarProvider
]
})
export class AppModule {}