«ion-title» не является известным элементом: при создании компонентов на лету - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь добавлять компоненты динамически ngOnInit.При создании компонента я получаю эту ошибку.

 "Uncaught (in promise): Error: Template parse errors: 'ion-title' is not a 
 known element"

Вот мой код:

TS:

import { Component,Input, OnInit, Compiler, Injector, VERSION, ViewChild, 
         NgModule, NgModuleRef, ViewContainerRef, AfterViewInit,
         ComponentFactoryResolver } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { ViewController } from 'ionic-angular';

@Component({
     selector: 'page-cashbalancemodal_rpt',
     template: '<ng-container #dynamicTemplate></ng-container>',
})

export class Cashbalancemodal_rptPage {

   @ViewChild('dynamicTemplate', {read: ViewContainerRef}) 
              viewContainerRef;

   constructor(){.......}

   ngOnInit() {
         let template = this.navParams.get("modaltemplate");
         let myTemplateUrl = "assets/templates/"+template+".html";

         const tmpCmp = Component({
             templateUrl: myTemplateUrl
         })(class {});

         const tmpModule = NgModule({
             declarations: [tmpCmp],
             entryComponents: [tmpCmp],
        })(class {});


        this._compiler.compileModuleAndAllComponentsAsync(tmpModule)
          .then((factories) => {
          const f = factories.componentFactories[0];
          const cmpRef = this.viewContainerRef.createComponent(f);
          cmpRef.instance.name = 'dynamic';
      })
  }

}

Я сталкивался со многими решениями.Одним из наиболее часто используемых решений является добавление «IonicModule» в app.module.ts.Я тоже это сделал.Но не могу избавиться от этой ошибки.

app.module.ts

 import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
 @NgModule({
       imports: [
           BrowserModule,
           IonicStorageModule.forRoot(),
           HttpModule,
           IonicModule.forRoot(MyApp),
           ComponentsModule,
      ],
 })

Пожалуйста, помогите решить эту ошибку.

1 Ответ

0 голосов
/ 23 ноября 2018

Поскольку вы используете ионные компоненты в tmpCmp, который установлен в tmpModule,

Вам необходимо импортировать IonicModule в этот модуль.

     const tmpModule = NgModule({
         declarations: [tmpCmp],
         imports:[IonicModule],
         entryComponents: [tmpCmp],
    })(class {});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...