Angular 10 Markdown Custom Pipe
In this tutorial, we'll create a custom Angular pipe for parsing Markdown into HTML. We'll use the latest Angular 10 version but the steps are also valid for the previous versions of the framework.
You need to have Angular CLI v10 installed on your development machine before you can proceed with this tutorial's steps.
Step 1 — Creating a New Angular 10 Project
If you don't have a project yet, you need to run the following command to create a new project:
$ ng new Angular10MarkdownPipe
The CLI will ask you a couple of questions — If Would you like to add Angular routing? Type y for Yes and Which stylesheet format would you like to use? Choose CSS.
Next, navigate to you project’s folder and run the server using the following commands:
$ cd Angular10MarkdownPipe
$ ng serve
Open your web browser and navigate to the http://localhost:4200/
address to see your app running.
Step 2 — Installing the marked
Markdown Parser
Next, you need to install the marked
Markdown parser that will be used for actually parsing the Markdown content:
$ cd Angular10MarkdownPipe
$ npm install marked
Step 3 — Creating a New Custom Pipe
Next, you need to create a new custom Angular pipe using Angular CLI as follows:
$ ng generate pipe markdown
This will create a new pipe called markdown
and import it in your src/app/app.module.ts
file:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { MarkdownPipe } from "../markdown.pipe";
@NgModule({
imports: [ BrowserModule, FormsModule ],
declarations: [ AppComponent, MarkdownPipe ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
Next, open the src/app/markdown.pipe.ts
file and update it as follows:
import { Pipe, PipeTransform } from '@angular/core';
import * as marked from "marked";
@Pipe({
name: 'markdown'
})
export class MarkdownPipe implements PipeTransform {
transform(value: any, args?: any): any {
if (value && value.length > 0) {
return marked(value);
}
return value;
}
}
We import marked
, and update the transform()
method to parse and return HTML.
Next, open the src/app/app.component.ts
file and add the following variables:
import { Component, VERSION } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
name = 'Angular ' + VERSION.major;
public title: string = '*Angular 10 Markdown Pipe*';
public content: string = '**Markdown** is cool!';
}
Next, open the src/app/app.component.html
file and update it as follows:
<h1 [innerHTML]="title | markdown"></h1>
<div [innerHTML]="content | markdown"></div>
We use the innerHTML
attribute to render the HTML code resulted from converting the Markdown content in the two component variables.
Conclusion
In this tutorial, we've seen by example how to create a custom pipe in Angular 10 to parse Markdown into HTML.
-
Date: