【问题标题】:Is there a way to to print the component raw code before rendered to the screen in Angular?有没有办法在 Angular 中渲染到屏幕之前打印组件原始代码?
【发布时间】:2018-06-14 09:45:53
【问题描述】:

我正在尝试在不使用任何第三方文档库(如 typedoc 等)的情况下构建 Angular UI 组件库文档,但发现很难将原始组件代码示例打印到屏幕上,例如,如果我尝试:

<pre><code><some-component></some-component></code></pre>

&lt;some-component&gt; 将被渲染而不是显示代码。 我在这里生成了一个例子https://plnkr.co/edit/baaNxRX1K1H8ry9pwfBU?p=preview 如您所见,我试图从&lt;example-component&gt; 中的&lt;ng-content&gt; 获取原始dom,而&lt;child-component&gt; 已经呈现在原始dom 中,这不是我想要的。

有没有办法打印出原始组件代码而不将其放入字符串中:

let codeString = '<child-component></child-component>'

谢谢!

【问题讨论】:

  • 你想展示模板还是组件的类代码?
  • 我想显示我认为的组件的类代码。对于上面的示例,我只想显示&lt;child-component&gt;&lt;/child-component&gt;

标签: javascript html angular components document


【解决方案1】:

如果要显示选择器,只需使用

<code>{{ '<child-component></child-component>' }}</code>

内插字符串不会呈现为 HTML 和/或 Angular 语法,它们只是按原样呈现。

至于显示组件的类的代码....虽然,我认为这不是完全不可能的(尽管您可能可以显示编译后的 JS,而不是原始的 TypeScript 代码),但我认为最安全和最简单的解决方案就是将代码复制粘贴到一个字符串中并插入它。

【讨论】:

  • 您好,我已经更新了 plnkr,但它没有工作,组件仍然以这种方式呈现。角度,errrrrrrrrrr
  • 哇,这很有趣!我的意思是,这应该是 Angular 的问题。为什么它将内插的内联字符串视为有效的 HTML?这真的很奇怪。好吧,无论如何,您可以尝试创建一个管道,例如,以确保将字符串视为安全文本。
【解决方案2】:
<code [innerText]="'<child-component></child-component>'"></code>

如果您的项目是使用 webpack 构建的,您可以使用 raw-loader 获取组件的代码:

@Component({
    template: `
        <code>{{ componentString }}</code>
    `
})
export class AppComponent {
  componentString = require('!!raw-loader!./some.component.html');
}

语法高亮使用prismjs-loader。这是demo project。

【讨论】:

  • 谢谢,这会起作用,但现在我需要弄清楚如何将那段字符串动态加载到 Angular 5 中的组件中,对此有什么建议吗?谢谢!
  • 嗨,Hayden,有没有办法在 ng cli 中使用 raw-loader?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 2011-02-08
  • 2015-08-05
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多