如何在 Angular 中动态渲染 Markdown 文件?

Tyl*_*l'a 9 markdown dynamic require typescript angular

我正在尝试编写一个 Angular 组件,使用该ngx-markdown库将 Markdown 文件呈现为网页的一部分。查看库的官方演示,它有一个文件列表,require然后从以下文件呈现:

从演示的app.component.ts

  blockquotes = require('raw-loader!./markdown/blockquotes.md');
  codeAndSynthaxHighlighting = require('raw-loader!./markdown/code-and-synthax-highlighting.md');
  emphasis = require('raw-loader!./markdown/emphasis.md');
  headers = require('raw-loader!./markdown/headers.md');
  horizontalRule = require('raw-loader!./markdown/horizontal-rule.md');
  images = require('raw-loader!./markdown/images.md');
  links = require('raw-loader!./markdown/links.md');
  lists = require('raw-loader!./markdown/lists.md');
  listsDot = require('raw-loader!./markdown/lists-dot.md');
  tables = require('raw-loader!./markdown/tables.md');
Run Code Online (Sandbox Code Playgroud)

从演示中app.component.html

<!-- HEADER -->
<section id="headers">
<h2 class="subtitle">Headers</h2>

<pre>{{ headers }}</pre>

<markdown>{{ headers }}</markdown>
</section>
Run Code Online (Sandbox Code Playgroud)

还有其他部分从其他requires中读取,但语法是相同的。

我想要做的是使用一种方法来更改<markdown>标签读取的文件。这是我到目前为止所拥有的:

  // Markdown variable.
  markdown;

  ngOnInit() {
    this.setMarkdown('home.md');
  }

  setMarkdown(file: string) {
    const path = 'raw-loader!./assets/markdown/' + file;
    this.markdown = require(path);
  }
Run Code Online (Sandbox Code Playgroud)

我显然做错了什么,因为我收到编译器错误:

ERROR in src/app/app.component.ts(24,21): error TS2591: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
Run Code Online (Sandbox Code Playgroud)

我做错了什么,我将如何编写一种更改降价源并实际工作的方法?

pen*_*han 6

根据文档https://www.npmjs.com/package/ngx-markdown#directive,您可以通过[src]以下方式加载文件:

<!-- loaded from remote url -->
<div markdown [src]="'path/to/file.md'" (load)="onLoad($event)" (error)="onError($event)"></div>
Run Code Online (Sandbox Code Playgroud)