2017-09-27 3 views
0

Le problème est que je veux faire un événement en alerte (bouton) que je veux le faire bouger vers une autre page et ce bouton n'existe plus en HTML que la raison pour laquelle je peux ' t faire une (clic) fonction et quand je l'exécute, ne me donnez pas d'erreur de fournisseur "Aucun fournisseur pour NavController". J'ai essayé une autre optionImpossible de lire la propriété 'navCtrl' de null ionic3

je ViewChild et de l'importer à partir @angular/core,
faire @viewChild('myApp') et a ajouté ce #myApp-ion-nav
définir navCtrl: NavController en classe.

Dans un constructeur, j'ai ajouté public push: Push mais il ne peut pas le lire. dans ce temps, il me donne "Impossible de lire la propriété 'navCtrl' de null".

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

Répondre

0

S'il vous plaît vérifier ce code:

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();