当前位置: 首页 > 知识库问答 >
问题:

离子3动态模板URL

岑鸣
2023-03-14

我有一个我在离子中重新开发的应用程序,大约一年前我在离子v1中做过。我有多个模板类型,用户将从中选择,我想做一个动态组件,根据用户配置值加载其templateURL。因此,除了加载组件和获得正确的模板之外,一切都在进行中,除了当我运行应用程序时,它会给出模板错误,就好像它不知道ngModel是一个角属性一样。这是我所拥有的:

import { Compiler, Component, AfterViewInit, OnInit, Injector, ViewChild, NgModule, NgModuleRef, ViewContainerRef } from '@angular/core';
import { NavController } from 'ionic-angular';

import { SomeService } from '../../app/services/app.services';

@Component({
    template: `<ng-container #dynamicvc></ng-container>`
})
export class DynamicHome implements OnInit {
    @ViewChild('dynamicvc', { read: ViewContainerRef }) container;
    ehi: any;
    sponsorGroups: any[];
    baseUrl: string;
    selectedSegment: string;

    constructor(private compiler: Compiler, private injector: Injector, private moduleRef: NgModuleRef<any>, private someSvc: SomeService, private navCtrl: NavController) {
        let vm = this;

        vm.selectedSegment = 'home';
    }

    ngAfterViewInit() {
        let vm = this;

        const MaterialCardsSpookyHomeComponent = Component({ templateUrl: './materialcardsspooky/materialcardsspooky-home.html' })(class MaterialCardsSpookyHomeComponent { });
        const MaterialCardsSpookyHomeModule = NgModule({ declarations: [MaterialCardsSpookyHomeComponent]})(class MaterialCardsSpookyHomeModule { });

        let moduleToUse = null;
        switch (vm.someSvc.template.toLowerCase()) {
            case 'materialcardsspooky':
                moduleToUse = MaterialCardsSpookyHomeModule;
                break;
        }

        if (moduleToUse) {
            vm.compiler.compileModuleAndAllComponentsAsync(moduleToUse).then((factories) => {
                const f = factories.componentFactories[0];
                const cmpRef = f.create(vm.injector, [], null, vm.moduleRef);
                cmpRef.instance.ehi = vm.ehi;
                cmpRef.instance.sponsorGroups = vm.sponsorGroups;
                cmpRef.instance.baseUrl = vm.baseUrl;
                cmpRef.instance.selectedSegment = vm.selectedSegment;
                vm.container.insert(cmpRef.hostView);
            });
        }
    }

    ngOnInit() {
        let vm = this;

    }
}

这是我的模板:

<ion-header>
  <ion-toolbar no-border-top no-border-bottom>
    <ion-segment [(ngModel)]="selectedSegment">
      <ion-segment-button value="home" no-border-bottom>
        <ion-icon name="home"></ion-icon>
      </ion-segment-button>
    </ion-segment>
  </ion-toolbar>
</ion-header>
<ion-content>
  <div [ngSwitch]="selectedSegment">
    <div *ngSwitchCase="'home'">
        ...
    </div>
  </div>
</ion-content>

以下是我在Chrome开发工具中的错误:

无法绑定到ngModel,因为它不是离子段的已知属性。

  1. 如果“离子段”是一个角度组件,并且具有“ngModel”输入,则验证它是否是该模块的一部分
  2. 如果“ion segment”是Web组件,则将“CUSTOM_ELEMENTS_SCHEMA”添加到“@NgModule”。“此组件的架构”以抑制此消息
  3. 若要允许任何属性,请将“无错误模式”添加到“@NgModule”。此组件的架构。(”

有什么想法如何甚至如果我能做到这一点?此外,使用VS2017和带有默认构建脚本的标准Ionic模板,即webpack。

共有1个答案

晁开宇
2023-03-14

要使Angular Recognition ionics定制组件,需要在NgModule的导入阵列中执行以下操作:

imports: [ IonicPageModule.forChild(MaterialCardsSpookyHomeComponent) ]

此外,如果模块中使用的每个自定义组件已在另一个模块中声明并导出,则需要将其置于导入数组中;如果未在另一个模块中声明,则需要将其置于声明数组中。

 类似资料:
  • 问题内容: 我在模板中有一个需要模板的自定义标签。该属性将由范围填充,然后需要正确的模板。 根据赞美诗的星期和日期,它有多种版本。我期望使用该指令来填充正确的部分。不会读取变量。 有在摘录目录多个文件被标记,… 问题答案: 您可以使用指令。 尝试这样的事情: UPD。 用于观看属性

  • 问题内容: 我正在尝试根据范围值使用不同的模板进行指令。 这是我到目前为止所做的,我不知道为什么它不起作用http://jsbin.com/mibeyotu/1/edit HTML元素: 指示: 问题答案: 1)您正在将内容作为属性传递到html中。试试这个: 代替: 2)指令的数据部分正在被编译,因此您应该使用其他东西。代替数据类型,例如datan-type。 链接在这里: http://jsb

  • 问题内容: 我一直在玩弄角2在过去的几天,不知道是否有可能提供一个动态的装饰。 我尝试过将其传递给一个函数并从中返回一个字符串,但是整个函数都变成了字符串。 我之前也没有真正使用过Angular 1.x,所以我不知道我是不是以错误的方式进行操作,但这是否可行,或者有没有更好的方法来创建动态视图? 例如,如果用户未登录,我可能要显示一个表单,但如果用户登录,则要显示文本消息。 这样的事情不起作用:

  • 我想创建一个模板随机数生成器类,它可以是整数类型,也可以是浮点类型。为什么?对于赋值,我编写了一个累积函数(本质上与std::acculate相同),我想制作一个可以是任意整数或浮点类型的测试工具(例如,无符号| short | long | long long int、float、double)。我们一直在研究模板,我试图通过使用模板编程来做出动态编译时决策。我可能用了错误的方法来处理这个问题-

  • 在组件中: 鉴于:

  • 我们已有的几件: Post 模型定义在 models.py 中,我们有 post_list views.py 和添加的模板中。 但实际上我们如何使我们的帖子出现在我们的 HTML 模板上呢? 因为那是我们所想要的: 获取一些内容 (保存在数据库中的模型) 然后在我们的模板中很漂亮的展示,对吗? 这就是 views 应该做的: 连接模型和模板。 在我们的 post_list 视图 中我们需要获取我们