我正在尝试创建一个共享Angular组件的库,以便用于多个不同的Web项目。随着共享组件库,我试图创建一个Web项目,其中包含并显示所有这些组件和代码示例以了解如何使用它们。有没有办法获取Angular *组件的HTML模板?
如从有关的类似问题的其他查询看出,为了在网页中在<pre>
或<code>
标签显示HTML代码,这些HTML片段的某些方面需要有HTML编码的字符(即>
需要是>
,<
需要是<
)。手动从源代码进行这些更改的需求可能非常繁琐和繁琐。
我想找到一种方法来读取给定组件的HTML模板,使少量文本替换所需,然后将该值设置为要显示在视图中的属性。我见过其他类似的SO问题,如this。
如果我有foo.component.ts
如下:
import { Component } from '@angular/core';
@Component({
selector: 'foo',
template: `
<div class="foo">
<div class="content">
<ng-content select="[top-content]"></ng-content>
</div>
<div class="extra content">
<ng-content select="[bottom-content]"></ng-content>
</div>
</div>
`
})
export class FooComponent {}
我想创建一个display-foo.component.ts
的东西如下:
import { Component } from '@angular/core';
import { FooComponent } from './foo.component';
@Component({
selector: 'display-foo',
template: `
<pre class="example-code">
<code>
{{encodedExampleHtml}}
</code>
</pre>
<foo>
<div top-content>TOP</div>
<div bottom-content>BOTTOM</div>
</foo>
`
})
export class DisplayFooComponent {
encodedExampleHtml: string;
constructor() {
this.encodedExampleHtml = new FooComponent().template.replace('<', '<').replace('>', '>');
}
}
在本质上,这将使该模板在UI下一个开发商查看并理解如何利用以及该类型组件的实际渲染元素以及显示组件在实际应用程序中使用时的外观。
DisplayFooComponent
我无法弄清楚如何工作的部分是这一行this.encodedExampleHtml = new FooComponent().template.replace('<', '<').replace('>', '>');
把它当作我想做的事情的伪代码,因为Angular组件对象没有模板属性,而且据我所见没有显示该组件的模板的属性。
有没有一种方法可以利用Angular框架获取组件的HTML模板?同样,我不希望带有表达式的内插内容被替换,而是由装饰器的template
属性或其templateUrl
属性与元素相关联的实际原始HTML模板?
你打算使用AOT吗? – yurzui
@yurzui是的,我正在计划它 – peinearydevelopment