2017-09-27 71 views
0

问题是,我想在alert(按钮)中创建一个事件,我想让它移动到另一个页面,并且此按钮不再存在于HTML中, (点击)功能,当我运行它,给我没有提供者错误“没有提供NavController”。 我尝试另一种选择无法读取属性'navCtrl'null ionic3

我用ViewChild@angular/core导入,
使@viewChild('myApp'),并将此#myAppion-nav
类定义navCtrl: NavController

在构造函数中,我添加了public push: Push,但它无法读取它。 在这个时候,它给了我“无法读取属性'空'的navCtrl'”。

import { Component }          from '@angular/core'; 
import { Platform, Alert, AlertController, NavController } from 'ionic-angular'; 
import { StatusBar }          from '@ionic-native/status-bar'; 
import { SplashScreen }         from '@ionic-native/splash-screen'; 
import firebase           from 'firebase'; 
import { FirebaseProvider }        from '../providers/firebase/firebase'; 
import { ViewProvider }         from '../providers/view/view'; 

//pages 
import { OpenPage } from '../pages/open/open'; 
import { AcceptOrderPage } from '../pages/accept-order/accept-order'; 

@Component({ 
    templateUrl: 'app.html' 
}) 

export class MyApp { 
    rootPage = OpenPage; 
    public marginClass:any="normal"; 
    public available:boolean=true; 
    public orderId:string; 
    public alert: Alert; 

    constructor(platform: Platform, statusBar: StatusBar, splashScreen: 
    SplashScreen, public fb: FirebaseProvider, 
    public view: ViewProvider, private alertCtrl: AlertController, public 
    navCtrl: NavController) { 
    platform.ready().then(() => { 
    if (platform.is('ios')){ 
     this.marginClass="iosMargin" 
    } 
    statusBar.styleDefault(); 
    splashScreen.hide(); 
    }); 
    var config = { 
     apiKey: "AIzaSyDbn0bLyNh4emJXjVAKb_BsOyH7ahiY-3U", 
     authDomain: "cat-drivers.firebaseapp.com", 
     databaseURL: "https://cat-drivers.firebaseio.com", 
     projectId: "cat-drivers", 
     storageBucket: "cat-drivers.appspot.com", 
     messagingSenderId: "444330551162" 
    }; 
    firebase.initializeApp(config); 

    var starCountRef = 
    firebase.database().ref('drivers/'+this.orderId+'/Orders'); 
    starCountRef.on('value', function(snapshot) { 
     let alert = alertCtrl.create({ 
     title: 'لديك طلب جديد؟', 
      buttons: [ 
     { 
      text: 'رفض', 
      role: 'cancel', 
      handler:() => { 
      console.log('Cancel clicked'); 
      } 
     }, 
     { 
      text: 'قبول', 
      handler:() => { 
      console.log('Buy clicked'); 
      navCtrl.push(AcceptOrderPage); 
      } 
     } 
     ] 
    }); 
    alert.present(); 
    }); 
} 
    sendData(x){ 
     this.view.localGet("uid").then((uid)=>{ 
     this.fb.setData('drivers/'+uid+'/outOfService/',x)}) 
    } 

    toggleState(item){ 
    this.available=!this.available; 
     // console.log(this.available) 
    } 
    } 

回答

0

请检查验证码:

var starCountRef = 
firebase.database().ref('drivers/'+this.orderId+'/Orders'); 
var _that=this; 
starCountRef.on('value', function(snapshot) { 
    let alert = alertCtrl.create({ 
    title: 'لديك طلب جديد؟', 
     buttons: [ 
    { 
     text: 'رفض', 
     role: 'cancel', 
     handler:() => { 
     console.log('Cancel clicked'); 
     } 
    }, 
    { 
     text: 'قبول', 
     handler:() => { 
     console.log('Buy clicked'); 
     _that.navCtrl.push(AcceptOrderPage); 
     } 
    } 
    ] 
}); 
alert.present();