Angular 离子:提供程序不可解析

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

我遇到了一个问题,到目前为止我还找不到合适的人选

所以我有一个3页的ionic项目和一个api连接的提供者

Scanner.ts:

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 {}