Javascript 尝试关闭离子加载器时出错

Javascript 尝试关闭离子加载器时出错,javascript,angularjs,ionic-framework,ionic3,Javascript,Angularjs,Ionic Framework,Ionic3,我有一个Ionic3应用程序,它根据一个动作将数据发布到API,在等待动作完成时,我使用Ionic的LoadingController显示一个加载程序 import { LoadingController } from 'ionic-angular'; 我通过以下方式声明加载程序: this.loader = this.loadingCtrl.create({ content: "Please wait..." }); 然后,我使用加载程序: doSomething(item) {

我有一个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

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

所以你的错误是因为你有“创建”和“当前”的拆分

import { LoadingController } from 'ionic-angular';

constructor(public loadingCtrl: LoadingController) { }

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

  loading.present();

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

谢谢你,我会试一试的,看起来应该有用。。我唯一的评论是,即使在Ajax调用之后,这是否仍然有效?因此,当调用完成时,我可以调用loading.Disclose(),而不必等待默认的5000?5000?例如,调用完成后,您应该订阅可观察的返回或承诺(如果您使用承诺),然后调用Disclose。抱歉,我不明白5000是如何定义的,我在http调用中使用承诺。this.presentLoadingDefault();this.getDebt().then((res)=>{this.data=res;this.customers=this.data.data;this.loading.disease();},(err)=>{console.log(err);});我有点想避免在我的控制器上的每个函数中创建常量加载。5000只是一个计时器,一旦时间过去,将调用disclose。在你的例子中,在present-inside-presentLoadingDefault()之后,把你的http请求放在'then'中,一旦你完成了所有的逻辑