【问题标题】:Error: No component factory found for [object Object]错误:未找到 [object Object] 的组件工厂
【发布时间】:2019-07-10 14:06:39
【问题描述】:

我被困住了。 我知道通常如何处理这个问题,但这次我卡住了。

1) Error: Uncaught (in promise): Error: No component factory found for [object Object]. Did you add it to @NgModule.entryComponents?

为什么错误消息显示[object Object],而不是特定组件?

我知道错误在哪里,我知道是哪个代码导致的。 但我不明白为什么会发生错误以及为什么会显示[object Object]

2) 我创建了一个组件,我已将它添加到declarationsentryCompoents。现在我正在尝试将此组件用作同一模块的另一个组件的模态。

我写了一个代码:

  openModal() {
    const modal = this.modalCtrl.create({
      component: SetLocationModal
    });

    modal.present();
    return false;
  }

<span (click)="openModal()">open modal</span>

执行失败

【问题讨论】:

  • 模态是否需要导入任何模块?例如,如果您使用ngx-bootstrap,则需要导入NgbModule
  • 模态是同一个模块的一部分
  • 我刚刚通过创建一个新项目进行了测试,据说,但它已经使用了 Ionic 4。ModalController 现在使用了 Promise,稍微调整一下代码就可以了。但 Ionic 3 对我来说失败了
  • 是的,刚刚再次测试,如果我甚至使用 ionic 3 开始一个空白项目,那么我会得到同样的错误。命令行:离子启动 MyIonicProject 空白 --type=ionic-angular
  • 我有一个工作示例。我认为 Ionic 3 只能使用 Pages 模态内容,即动态加载(延迟加载),但不能使用本机组件。 Ionic 4 支持这一点。

标签: angular typescript cordova ionic-framework


【解决方案1】:

您发现您的代码仅适用于 ionic v4。面临同样的问题并且不想升级 ionic,但我发现这段代码对我有用:

在打开页面上:

async presentModal() {
    let modal = this.modalController.create(ModalNew);
    modal.onDidDismiss(data => {
      console.log(data);
    });
    modal.present();
  }

模态:

import { Component } from '@angular/core';
import {ViewController} from "ionic-angular";

@Component({
  selector: 'new-time',
  templateUrl: 'new.html'
})
export class ModalNew {

  constructor(public viewCtrl: ViewController) {
    // componentProps can also be accessed at construction time using NavParams
  }
}

模态html

  <ion-header>
    <ion-toolbar>
    <h1 class="title">My Modal title</h1>
    </ion-toolbar>
  </ion-header>
  <ion-content padding>
  </ion-content>

此答案基于:https://ionicframework.com/docs/v3/api/components/modal/ModalController/

【讨论】:

  • 是的,我混淆了 Ionic v3 和 Ionic v4 版本。 Ionic 3 Modal 接受组件本身,而 Ionic 4 接受并反对,具有属性component
【解决方案2】:

modalCtrl 的类型是什么?一个 MatDialog?或其他?我已经在以前的项目中实现过,记得做“打开”而不是创建

  this.modalCtrl.open(RequestCardComponent, {/*any data to pass to the component*/}); 

【讨论】:

  • 类型是 ModalController - Ionic 3 内置组件
猜你喜欢
  • 1970-01-01
  • 2019-03-02
  • 1970-01-01
  • 1970-01-01
  • 2016-03-26
  • 2020-07-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-30
相关资源
最近更新 更多