A simple markdown editor component for Angular 2 and up.
Using npm
npm install @ymchun/ngx-markdown-editor
Import to your module
import { NgxMarkdownEditorModule } from '@ymchun/ngx-markdown-editor';
@NgModule({
imports: [
NgxMarkdownEditorModule, // <-- import the library into your module
],
})
export class AppModule {}
<ngx-markdown-editor name="markdown" [(ngModel)]="markdown" (files)="upload($event)" (mentionSearchTerm)="search($event)"></ngx-markdown-editor>
<iframe ngxMarkdownViewer [markdown]="markdown" (ready)="ready()" (mentions)="mentions($event)" (tags)="tags($event)" (taskLists)="taskLists($event)"></iframe>
<div>{{ markdown | ngxMarkdownTextPreview }}</div>
import { NgxMarkdownEditorService } from '@ymchun/ngx-markdown-editor';
@Component({
...
})
export class DemoComponent {
public constructor(private ngxMarkdownEditorService: NgxMarkdownEditorService) {}
public parseMarkdown(markdown: string): string {
return this.ngxMarkdownEditorService.parse(markdown);
}
}
Type | Name | DataType | Default Value | Description |
---|---|---|---|---|
Input | height | string | '400px' |
Define the total height of the editor element including the toolbar |
Input | historySteps | number | 10 |
Define the number of history saved, 0 for disable |
Input | mentionConfigs | MentionConfig[] | [] |
Define mention configs |
Input | placeholder | string | '' |
Define the placeholder of the editor |
Input | resize | boolean | true |
Whether allow user to resize this editor |
Output | files | File[] | Nil |
Emit when files are dropped / pasted into the editor |
Output | mentionSearchTerm | string | Nil |
Emit when user type mention search term |
Type | Name | DataType | Default Value | Description |
---|---|---|---|---|
Input | markdown | string | undefined |
Define the input markdown |
Input | styles | string | undefined |
Define the additional css styles |
Input | getTagUrl | (tag: string) => string | undefined |
Define the function for the link of #tag |
Output | mentions | string | Nil |
Emit the mention when clicked, which is username |
Output | mentionWithIds | [ string, string ] | Nil |
Emit the mention when clicked, the first string is userId , the second is username |
Output | ready | boolean | Nil |
Emit when markdown content has loaded |
Output | tags | string | Nil |
Emit the tag string when clicked |
Output | taskLists | string | Nil |
Emit the updated markdown when clicked task list checkbox |
For the mentions
, the accepted formats are @(userId|user.name)
or @user.name
.
Name | DataType | Description |
---|---|---|
data | Observable<T[]> | Array of data entries feed into mention menu |
template | TemplateRef | Template for render mention menu entry |
transform | (item: T) => string | Transform function used before inserting content to editor |
trigger | string | Character for trigger mention menu |
Name | DataType | Description |
---|---|---|
term | string | User input search term |
trigger | string | Trigger character |