在Angular2中注入模板HTML部分

时间:2017-01-20 18:43:42

标签: angular

花了几个小时跟着ngTemplateOutlets,componentFactoryResolvers一起走下奇怪的兔子洞,然后围着ViewChild奇怪的东西......我想我们必须有更好的方法。

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

我可以通过将所有内容包装在自己的组件中来实现它,但这似乎是一种浪费,我需要在整个地方安装@Output eventEmitters,这看起来像是浪费。

我发现最接近“好”的是[innerHtml],但显然这不起作用,因为Angular2不会处理它所引发的html。我真的很惊讶没有直接的方式要做到这一点......它不需要考虑只是一种简单的方法来注入一些内联文本,这些文本会被正常处理。

最佳解决方案看起来像

<div>
    all my regular content
</div>

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

并且在该模板中注入的所有html都可以访问,并且能够访问范围内容和上下文中正常内联html的所有内容。

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

作为最后的手段,我想我可以用一点点取代动作,但这似乎超级hacky。

1 个答案:

答案 0 :(得分:-1)

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