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

angular 2包含html模板

南宫松
2023-03-14

在angular 2中,我需要创建一个包含冗余部分的大型html模板。因此,我想创建多个html模板,并通过将它们包含在主html文件中(如angular1中的ng include)将它们放在一起

但是如何在主模板中包含子模板?

例如:

<!-- test.html -->

<div>
    this is my Sub-Item
    <!-- include sub1.html here-->
</div>
<div>
    this is second Sub-Item
    <!-- include sub2.html here-->
</div>

-

<!-- sub1.html -->
<div>
    <button>I'am sub1</button>
</div>

-

<!-- sub2.html -->
<div>
    <div>I'am sub2</div>
</div>

共有2个答案

督建柏
2023-03-14

首先让我告诉你,从Angular1中包含ng。Angular2不支持x,因此显然,Angular2中不存在$Compile。因此,您可以继续使用CRF ComponentFactoryResolver,如图所示,使用角度上下文动态添加HTML。

演示--(CFR):https://plnkr.co/edit/YdRlULhWQR3L3akAr2eb?p=preview

如果超文本标记语言有角上下文,则应使用CFR-ComponentFactoryResolver

sub1.html中,您有按钮,您可能想要单击它并触发其单击事件。这可以通过如下所示的CFR来实现,

你可以用CRF做很多事情。这可能是最简单的例子。

@Component({
  selector: 'my-app',
  template: `

     <button (click)="addComponents()">Add HTML (dynamically using CRF)</button>

     <h1>Angular2 AppComponent</h1>
     <hr>

     <div>
     <h5>sub1.html goes here</h5>
      <div class="container">
        <template #subContainer1></template>
      </div>
     </div>

     <hr>
     <h5>sub2.html goes here</h5>
     <div class="container">
        <template #subContainer2></template>
     </div>
  `,

})
export class App {
    name:string;
    @ViewChild('subContainer1', {read: ViewContainerRef}) subContainer1: ViewContainerRef;
    @ViewChild('subContainer2', {read: ViewContainerRef}) subContainer2: ViewContainerRef;
    constructor(
      private compFactoryResolver: ComponentFactoryResolver
      ) {
      this.name = 'Angular2'
    }

    addComponents() {

      let compFactory: ComponentFactory;

      compFactory = this.compFactoryResolver.resolveComponentFactory(Part1Component);
      this.subContainer1.createComponent(compFactory);


      compFactory = this.compFactoryResolver.resolveComponentFactory(Part2Component);
      this.subContainer2.createComponent(compFactory);
    }
  }
}

傅高逸
2023-03-14

您可以创建sub1 sub2等组件,并在这些子组件上添加这些html文件作为模板。

在主html上分别调用组件选择器。它会起作用的

 类似资料:
  • 问题内容: 我正在为使用Jinja模板的服务器使用Flask微框架。 我有一个家长和孩子们的一些所谓的模板和,这些孩子有的模板是相当大的HTML文件,我想以某种分裂他们超过我的工作更好的洞察力。 我的脚本内容: The magic is in : 魔力在于child1.html: 而不是评论: 我有很多html文本,很难跟踪更改并且不犯一些错误,因此很难查找和纠正。 我只想加载而不是全部写入。 我

  • 如何在Thymeleaf中显示包含HTML标记的字符串? 所以这段代码: 在这行代码中,它会在浏览器上生成以下内容: 但是我想在浏览器上显示这个: 测试

  • 问题内容: 我是新手,以前从未使用过PHP。我想从Linux上的HTML文件执行PHP脚本。我需要做什么? 这是我的HTML文件的内容: 问题答案: 您收到什么输出?它只是显示PHP代码吗? 我认为是这样。 为了进行测试,请将文件扩展名更改为,然后再次运行。现在可以用吗? 如果是这样,您将需要将PHP与服务器上的和文件关联。 编辑 这是您要添加到Apache配置中的行:

  • 问题内容: 在以下情况下如何使用包含。目的是在html(部分)文件中使用标记,而不是在模板中(在指令内)定义标记。 我在这里找到了一个很棒的树指令。( 来源)原文: http //jsfiddle.net/n8dPm/ 我没有在指令中定义模板,而是尝试使用包含在内的内容。我还将Angular更新为1.2.0.rc2。更新时间:http://jsfiddle.net/aZx7B/2/ 低于错误 Ty

  • 问题内容: 我在主布局文件中有这个 我的目录结构中有header.html部分模板。 如何在我的应用程序中包含此模板?我认为angular在处理完控制器后会自动包含模板,但是它不起作用。 标头节点应替换为此文件的内容。 问题答案: 包含来自外部文件的模板/ html片段的一种方法是使用指令(doc)。 要么

  • 对于多个页面包含的公共内容,可能会被封装到一个公共模板文件中。 比如左侧导航,文件位置和其他普通模板是一样的,/App1/View/Home/Nav.left.html 其他模板引用局部模板使用标签:{include:模块名称:操作名称}  //比如:{include:Public:header} 本文中引用左侧导航模板:{include:Nav:left} //两边是大括号,中间是冒号。 注:局