typescript - ionic2 .. 类型错误 : Cannot read property 'query' of null

标签 typescript ionic-framework angular hybrid-mobile-app ionic2

所以我是 IONIC2 的新手..我只尝试过 helloworld 并且它有效..我之前确实有过 Angular2 和 Typescript 的经验,但以前没有使用 IONIC 的经验。

我想做的是使用此链接 https://adamweeks.com/2016/05/11/creating-a-barcode-scanner-in-ionic-2-in-15-minutes/ 用 Ionic2 创建一个 BarcodeScanner ,但是每当我在浏览器上测试时,我都会在控制台中收到以下错误

EXCEPTION: Error: Uncaught (in promise): TypeError: Cannot read property 'query' of null

我读到一些插件可能无法在浏览器上运行..所以我尝试在我的手机上部署(我之前设法用 helloworld 示例做到了),但是我只能看到一个白屏。

在我的应用程序中,我有两个页面 ScanpageHomepage

您可以在下面找到代码。

Home.html

<ion-navbar *navbar>
  <ion-title>
    Home
  </ion-title>
</ion-navbar>

<ion-content class="home">
  <ion-card>
    <ion-card-header>
      Card Header
    </ion-card-header>
    <ion-card-content>
      Hello World
      <button block (click)="scan()">Scan</button>
    </ion-card-content>
  </ion-card>
</ion-content>

Home.ts

import {Page, Platform, Alert, NavController, Toast} from 'ionic-angular';
import {BarcodeScanner} from 'ionic-native';
import {BarcodeData} from '../../classes/BarcodeData.ts';
import {ScanPage} from '../scanResult/scan';  


@Page({
  templateUrl: 'build/pages/home/home.html'
})
export class HomePage {
  // static get parameters() {
  //       return [[Platform], [NavController]];
  //   }
  platform:Platform;
  navController:NavController;

    constructor(platform, navController:NavController) {
        console.log('hello');
        this.platform = platform;
        this.navController = navController;
    }

  scan() {
        BarcodeScanner.scan().then(
          (result) => {
            console.log('result');
            console.log(result);
            if (!result.cancelled) {
              const barcodeData = new BarcodeData(result.text, result.format);
              this.scanDetails(barcodeData);
            }
            return Promise.resolve(result);
          })
        .catch((err) => {
          let toast = Toast.create({
            message: 'Mmmm, buttered toast',
            duration: 3000
          });

          this.navController.present(toast);
          return Promise.reject(err);
        })
    }

  scanDetails(details) {
    this.navController.push(ScanPage, {details: details});
  }
}

scan.html

<ion-list-header>Barcode</ion-list-header>
<ion-item>
{{ barcodeData.text }}
</ion-item>
<ion-list-header>Format</ion-list-header>
<ion-item>
{{ barcodeData.format }}
</ion-item>

扫描.ts

import {Page, Platform, Alert, NavController, NavParams} from 'ionic-angular';
import {BarcodeData} from '../../classes/BarcodeData.ts';


@Page({
  templateUrl: 'build/pages/scanResult/scan.html'
})
export class ScanPage{
    barcodeData: BarcodeData;

    constructor(private nav: NavController, navParams: NavParams) {
        this.barcodeData = navParams.get('details');
    }
}

最佳答案

改变

constructor(platform, navController:NavController) {

constructor(platform:Platform, navController:NavController) {

Angulars DI 需要一个 key 来知道为每个参数注入(inject)什么。这可以通过 static get parameters() ... 或通过为构造函数参数提供类型来定义。

关于typescript - ionic2 .. 类型错误 : Cannot read property 'query' of null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37377398/

相关文章:

javascript - 结构类型不是鸭子类型(duck typing)

typescript - 键入 N 个数字的元组,后跟单个字符串

javascript - Typescript/Lodash group by——尝试将数组键的值与其数量分组

javascript - 迭代和修改 Firebase 数组会导致未定义

typescript - Ionic + Jasmine + Tslint - 类型上不存在属性 'and'

angular - 错误 TS2322 : Type 'Object' is not assignable to type 'Movie' ? Angular 7

javascript - typescript 并将对象转换为字符串

java - SimpleDateFormat解析错误

javascript - new Date() - Angular 2

angular - 仅当第一次失败时才执行第二次 http 调用