尝试解除Ionic Loader时出错

时间:2017-10-19 13:23:30

标签: javascript angularjs ionic-framework ionic3

我有一个Ionic3应用程序,它根据动作将数据发布到API,同时等待动作完成我使用Ionic的LoadingController显示一个加载器。

import { LoadingController } from 'ionic-angular';

我通过以下方式声明加载程序:

this.loader = this.loadingCtrl.create({
   content: "Please wait..."
});

然后我使用加载器:

doSomething(item) {

    this.loader.present().then(()=>{

      this.item.begin(item).then((result) => {

        this.data = result;
        this.loader.dismiss();

      }, (error) => {
        console.log(error);
        this.loader.dismiss();
      });

    });

  }

我收到错误:

  

错误错误:未捕获(在承诺中):插入的视图已经存在   毁

有人能指出我正确的方向吗?

环境:

cli packages: (/usr/local/lib/node_modules)

    @ionic/cli-utils  : 1.10.2
    ionic (Ionic CLI) : 3.10.3

global packages:

    Cordova CLI : 7.0.1

local packages:

    @ionic/app-scripts : 2.1.4
    Cordova Platforms  : ios 4.4.0
    Ionic Framework    : ionic-angular 3.6.1

System:

    ios-deploy : 1.9.2
    Node       : v7.7.1
    npm        : 4.1.2
    OS         : macOS Sierra
    Xcode      : Xcode 9.0 Build version 9A235

1 个答案:

答案 0 :(得分:1)

来自loading controller doc

  

请注意,在组件被解除后,它将不再可用,并且必须创建另一个组件。这可以通过将组件的创建和表示包装在可重用的函数中来避免,如下面的使用部分所示。

所以你的错误是因为你有创造和现在的分裂。

import { LoadingController } from 'ionic-angular';

constructor(public loadingCtrl: LoadingController) { }

presentLoadingDefault() {
  const loading = this.loadingCtrl.create({
    content: 'Please wait...'
  });

  loading.present();

  setTimeout(() => {
    loading.dismiss();
  }, 5000);
}