белый экран службы ионного хранения - PullRequest
0 голосов
/ 22 января 2019

Я хочу сделать услугу хранения в ионном. эта служба должна выполнять все методы CRUD и иметь возможность получать все значения.

Мое приложение даже не запускается, оно просто выходит на белый экран. Я не знаю, что я делаю не так. Я не получаю никаких ошибок в консоли.

Это мой сервисный код:

import { Flow } from "../Flow";
import { Task } from "../Task";
import { Injectable } from '@angular/core';
import { Storage } from '@ionic/storage';
@Injectable()
export class FlowService {
    constructor(private storage: Storage){
    }

    public  createFlow(projectName:string,columns:string[]):number{
     var tasks = new Map<number,Task>();
     var flowId = Number(this.storage.length());
     var flow = new Flow(flowId,projectName,columns,tasks)
     this.storage.set(flowId.toString(),JSON.stringify(flow));
     return flowId;
    }

    //Exists to get flow out of database or such
    public createExistingFlow(flowId:number,projectName:string,tasks:Map<number,Task>,columns:string[]){
        var flow = new Flow(flowId,projectName,columns,tasks)
        this.storage.set(flowId.toString(),JSON.stringify(flow));
       }

    public addTask(flowId:number,title:string,description:string,column?:number){
        var flow:Flow
        this.storage.get(flowId.toString()).then((val) => {
            flow = JSON.parse(val);
          });
        var taskId = flow.tasks.size;
        var task = new Task(flowId,taskId,title,description,column);
        flow.tasks.set(taskId,task);
        this.storage.set(flowId.toString(),JSON.stringify(flow));
    }

    public getFlow(flowId:number){
       return this.storage.get(flowId.toString()).then((val) => {
           return val;
          });

    }
}

я использую сервис в конструкторе здесь:

import { Component } from '@angular/core';
import { ModalController } from 'ionic-angular';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { Flow } from '../../model/Flow';
import { FlowService } from '../../model/services/flowService';
import {CreateTaskPage} from '../create-task/create-task'
import { Task } from '../../model/Task';
import { Storage } from '@ionic/storage';
/**
 * Generated class for the FlowPage page.
 *
 * See https://ionicframework.com/docs/components/#navigation for more info on
 * Ionic pages and navigation.
 */

@IonicPage()
@Component({
  selector: 'page-flow',
  templateUrl: 'flow.html',
})
export class FlowPage {
  flow:Flow;
  constructor(public navCtrl: NavController, public navParams: NavParams,private flowService:FlowService,public modalCtrl: ModalController) {
    flowService.getFlow(navParams.get("flowId")).then(data =>{
      this.flow = JSON.parse(data);
    })
  }

  ionViewDidLoad() {
    console.log('ionViewDidLoad FlowPage');
  }

  createTask(){
    const modal = this.modalCtrl.create(CreateTaskPage,{flowId:this.flow.flowId});
    modal.present();
  }
  swipe(e,task:Task){
    if(e.direction == 2){
      console.log("panUp");
      task.column--;
    }
    if(e.direction == 4){
      console.log("panDown");
      task.column++;
    }
  }
}

Когда приложение загружено, оно должно показать все потоки в меню. Здесь я не использую сервис, потому что я не знаю, как реализовать это в сервисе. Я просто использую хранилище напрямую

import { Component, ViewChild } from '@angular/core';
import { Nav, Platform } from 'ionic-angular';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';

import { HomePage } from '../pages/home/home';
import { CreateFlowPage } from '../pages/create-flow/create-flow';
import {FlowPage} from '../pages/flow/flow'
import { FlowService } from '../model/services/flowService';
import { Flow } from '../model/Flow';
import { Storage } from '@ionic/storage';
@Component({
  templateUrl: 'app.html'
})
export class MyApp {
  @ViewChild(Nav) nav: Nav;

  rootPage: any = HomePage;

  pages: Array<{title: string, component: any, flowId:number}>;

  constructor(public platform: Platform, public statusBar: StatusBar, public splashScreen: SplashScreen,private flowService:FlowService,private storage:Storage) {
    this.initializeApp();

    // used for an example of ngFor and navigation
    this.pages = [
      { title: 'Home', component: HomePage, flowId: null },
      { title: 'Create Project', component: CreateFlowPage, flowId: null }
    ];

       this.storage.forEach((value) =>{
            var flow:Flow = JSON.parse(value);
            this.pages.push({title: flow.projectName, component: null, flowId:flow.flowId})
        });
  }

  initializeApp() {
    this.platform.ready().then(() => {
      // Okay, so the platform is ready and our plugins are available.
      // Here you can do any higher level native things you might need.
      this.statusBar.styleDefault();
      this.splashScreen.hide();
    });
  }

  openPage(page) {
    // Reset the content nav to have just this page
    // we wouldn't want the back button to show in this scenario
    this.nav.setRoot(page.component);
  }
  openFlowPage(flow:Flow){
    console.log(flow.flowId)
    this.nav.setRoot(FlowPage,{flowId:flow.flowId})
  }
}

Кто-нибудь знает, что идет не так или в чем может быть проблема? Спасибо за помощь.

1 Ответ

0 голосов
/ 22 января 2019

Я нашел свою ошибку. У меня был ngFor для вызова метода в моем сервисе, который ничего не возвращает. По какой-то причине мое приложение не загрузилось из-за этого, и поэтому я не получил никаких сообщений об ошибках.

...