避免使用模态实用程序类进行循环依赖?

时间:2019-03-29 16:58:03

标签: angular typescript ionic-framework ionic4

我有一个utilities类,该类处理整个应用程序中的常见问题,例如显示警报,加载微调框和模式。现在,我正在首页上尝试调用utilities.openModal(),但是由于以下警告消息而导致循环依赖:

  

[ng]警告:已检测到循环依赖项:

     

[ng] src / app / pages / users / add-entry / add-entry.page.ts-> src / app / services / utilities / utilities.util.ts-> src / app / pages / users / add-entry / add-entry.page.ts

     

[ng]警告:已检测到循环依赖项:

     

[ng] src / app / services / utilities / utilities.service.ts-> src / app / pages / users / add-entry / add-entry.page.ts-> src / app / services / utilities / utilities.service.ts

utilities.service.ts上的openModal函数:

openModal(page, enterAnimation = null, leaveAnimation = null) {
  // Create modal
  this.modalCtrl.create({
    component: page,
    enterAnimation: enterAnimation,
    leaveAnimation: leaveAnimation,
    componentProps: {
      utilities: UtilitiesService
    }
  }).then(m => m.present());
}

openEntryModal() {
  this.openModal(AddEntryPage);
}

我只用this.utilities.openEntryModal()在主页组件上调用它,一旦模式打开,它就会引发循环依赖警告。任何想法为什么会这样?我有一个大概的主意,但无法查明。

add-entry.page.ts导入:

import { Component } from '@angular/core';
import { UtilitiesService } from 'src/app/services/utilities/utilities.service';

utilities.service.ts导入:

import { Injectable } from '@angular/core';
import { ModalController, LoadingController } from '@ionic/angular';
import { AnimationsService } from 'src/app/services/animations/animations.service';
import { AddEntryPage } from 'src/app/pages/users/add-entry/add-entry.page';

1 个答案:

答案 0 :(得分:0)

这意味着在utilities.service.ts中您导入了AddEntryPage,在add-entry.page.ts中您导入了UtilitiesService,这将导致循环依赖

根据您的代码,您似乎想从AddEntryPage(已导入服务)中打开AddEntryPage组件的模式

如果您将服务导入其他功能,最好将其分解,例如,创建另一个名为modalService的服务