angular - 在 Angular2 中注入(inject)模板 HTML 部分

标签 angular

在使用 ngTemplateOutlets、componentFactoryResolvers 探索奇怪的兔子洞并研究 ViewChild 的古怪之处之后……我认为必须有更好的方法。

我有一个组件,它的 html 模板越来越大。 纯粹出于组织目的,我想将一些 html 移动到子模板(其他文件)中。然后我想在我的主模板中只用一行来拉入它们,但所有内容的范围和上下文应该保持不变。

我可以通过将所有内容包装在它自己的组件中来让它工作,但这似乎是一种浪费,而且我需要在所有地方都使用@Output eventEmitter,这看起来也很浪费。

我发现最接近“好”的是 [innerHtml],但显然这行不通,因为 Angular2 不处理它抛出的 html。老实说,我很惊讶没有直接的方法要做到这一点......它不需要做任何思考,只需一种简单的方法来注入(inject)一些正常处理的内联文本。

最佳解决方案看起来像

<div>
    all my regular content
</div>

<template [ngExternalTemplate]="./app/home/templates/my-template.html"></template>

并且注入(inject)到该模板中的所有 html 都可以访问,并且能够访问普通内联 html 范围和上下文中的所有内容。

关于如何解决这个问题的任何想法?我讨厌看着 html 变得庞大,但实际上它不应该被拆分成多个组件,因为它们都在管理同一个 View 。

作为最后的手段,我想我可以用 gulp 来代替 action,但这看起来 super hacky。

最佳答案

您应该将模板拆分成多个组件,而不是创建非常大的模板。对于您的特定问题,您需要文本预处理器。

关于angular - 在 Angular2 中注入(inject)模板 HTML 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41770402/

相关文章:

Angular2 http.request 无法添加 header

angular - 按 Return 键时 mat-form-field 的奇怪行为

Angular 4 - 向滚动阻塞 'mousewheel' 事件添加了非被动事件监听器。

html - 我可以从我的组件 .css 文件中设置我的 ngx-bootstrap 元素的样式吗?

json - Angular:使用两个服务从一个组件添加数据时出现问题

angular - Angular 组件类如何实例化?

angular - attr.property 和 Angular 模板中的属性有什么区别?

Angular ngrx@effect 基本问题 : Type 'Observable<void>' is not assignable to type

angular - 错误 : Initializers are not allowed in ambient contexts

typescript - 如何在 Angular 2 中将 "String"值转换为 "Type"