Comment评论
对网站内容的反馈、评价和讨论。
何时使用
评论组件可用于对事物的讨论,例如页面、博客文章、问题等等。
代码演示

一个基本的评论组件,带有作者、头像、时间和操作。
import { Component } from '@angular/core';import { distanceInWords } from 'date-fns';@Component({selector: 'nz-demo-comment-basic',template: `<nz-comment nzAuthor="Han Solo" [nzDatetime]="time"><nz-avatarnz-comment-avatarnzIcon="user"nzSrc="//zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png"></nz-avatar><nz-comment-content><p>We supply a series of design principles, practical patterns and high quality design resources (Sketch andAxure), to help people create their product prototypes beautifully and efficiently.</p></nz-comment-content><nz-comment-action><inz-tooltipnzTitle="Like"nz-icontype="like"[theme]="likes > 0 ? 'twotone' : 'outline'"(click)="like()"></i><span class="count like">{{ likes }}</span></nz-comment-action><nz-comment-action><inz-tooltipnzTitle="Dislike"nz-icontype="dislike"[theme]="dislikes > 0 ? 'twotone' : 'outline'"(click)="dislike()"></i><span class="count dislike">{{ dislikes }}</span></nz-comment-action><nz-comment-action>Reply to</nz-comment-action></nz-comment>`,styles: [`.count {padding-left: 8px;cursor: auto;}`]})export class NzDemoCommentBasicComponent {likes = 0;dislikes = 0;time = distanceInWords(new Date(), new Date());like(): void {this.likes = 1;this.dislikes = 0;}dislike(): void {this.likes = 0;this.dislikes = 1;}}

配合 nz-list 组件展现评论列表。
import { Component } from '@angular/core';import { addDays, distanceInWords } from 'date-fns';@Component({selector: 'nz-demo-comment-list',template: `<nz-list [nzDataSource]="data" [nzRenderItem]="item" [nzItemLayout]="'horizontal'"><ng-template #item let-item><nz-comment [nzAuthor]="item.author" [nzDatetime]="item.datetime"><nz-avatar nz-comment-avatar nzIcon="user" [nzSrc]="item.avatar"></nz-avatar><nz-comment-content><p>{{ item.content }}</p></nz-comment-content><nz-comment-action>Reply to</nz-comment-action></nz-comment></ng-template></nz-list>`,styles: []})export class NzDemoCommentListComponent {data = [{author: 'Han Solo',avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png',content:'We supply a series of design principles, practical patterns and high quality design resources' +'(Sketch and Axure), to help people create their product prototypes beautifully and efficiently.',datetime: distanceInWords(new Date(), addDays(new Date(), 1))},{author: 'Han Solo',avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png',content:'We supply a series of design principles, practical patterns and high quality design resources' +'(Sketch and Axure), to help people create their product prototypes beautifully and efficiently.',datetime: distanceInWords(new Date(), addDays(new Date(), 2))}];}

评论可以嵌套。
import { Component } from '@angular/core';@Component({selector: 'nz-demo-comment-nested',template: `<ng-template #commentTemplateRef let-comment="comment"><nz-comment [nzAuthor]="comment.author"><nz-avatar nz-comment-avatar nzIcon="user" [nzSrc]="comment.avatar"></nz-avatar><nz-comment-content><p>{{ comment.content }}</p></nz-comment-content><nz-comment-action>Reply to</nz-comment-action><ng-container *ngIf="comment.children && comment.children.length"><ng-template ngFor let-child [ngForOf]="comment.children"><ng-template [ngTemplateOutlet]="commentTemplateRef" [ngTemplateOutletContext]="{ comment: child }"></ng-template></ng-template></ng-container></nz-comment></ng-template><ng-template [ngTemplateOutlet]="commentTemplateRef" [ngTemplateOutletContext]="{ comment: data }"> </ng-template>`,styles: []})export class NzDemoCommentNestedComponent {data = {author: 'Han Solo',avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png',content:'We supply a series of design principles, practical patterns and high quality design resources' +'(Sketch and Axure), to help people create their product prototypes beautifully and efficiently.',children: [{author: 'Han Solo',avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png',content:'We supply a series of design principles, practical patterns and high quality design resources' +'(Sketch and Axure), to help people create their product prototypes beautifully and efficiently.',children: [{author: 'Han Solo',avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png',content:'We supply a series of design principles, practical patterns and high quality design resources' +'(Sketch and Axure), to help people create their product prototypes beautifully and efficiently.'},{author: 'Han Solo',avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png',content:'We supply a series of design principles, practical patterns and high quality design resources' +'(Sketch and Axure), to help people create their product prototypes beautifully and efficiently.'}]}]};}

评论编辑器组件提供了相同样式的封装以支持自定义评论编辑器。
import { Component } from '@angular/core';import { distanceInWords } from 'date-fns';@Component({selector: 'nz-demo-comment-editor',template: `<nz-list *ngIf="data.length" [nzDataSource]="data" [nzRenderItem]="item" [nzItemLayout]="'horizontal'"><ng-template #item let-item><nz-comment [nzAuthor]="item.author" [nzDatetime]="item.displayTime"><nz-avatar nz-comment-avatar nzIcon="user" [nzSrc]="item.avatar"></nz-avatar><nz-comment-content><p>{{ item.content }}</p></nz-comment-content></nz-comment></ng-template></nz-list><nz-comment><nz-avatar nz-comment-avatar nzIcon="user" [nzSrc]="user.avatar"></nz-avatar><nz-comment-content><nz-form-item><textarea [(ngModel)]="inputValue" nz-input rows="4"></textarea></nz-form-item><nz-form-item><button nz-button nzType="primary" [nzLoading]="submitting" [disabled]="!inputValue" (click)="handleSubmit()">Add Comment</button></nz-form-item></nz-comment-content></nz-comment>`,styles: []})export class NzDemoCommentEditorComponent {data: any[] = [];submitting = false;user = {author: 'Han Solo',avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png'};inputValue = '';handleSubmit(): void {this.submitting = true;const content = this.inputValue;this.inputValue = '';setTimeout(() => {this.submitting = false;this.data = [...this.data,{...this.user,content,datetime: new Date(),displayTime: distanceInWords(new Date(), new Date())}].map(e => {return {...e,displayTime: distanceInWords(new Date(), e.datetime)};});}, 800);}}
API
| Property | Description | Type | Default |
|---|---|---|---|
| [nzAuthor] | 显示评论的作者 | string|TemplateRef<void> | - |
| [nzDatetime] | 展示时间描述 | string|TemplateRef<void> | - |
单独引入此组件
想要了解更多关于单独引入组件的内容,可以在快速上手页面进行查看。
import { NzCommentModule } from 'ng-zorro-antd';
评论组成部分
| 元素 | 说明 |
|---|---|
<nz-avatar nz-comment-avatar> | 要显示为评论头像的元素 |
<nz-comment-content> | 评论的主要内容 |
<nz-comment-action> | 在评论内容下面呈现的操作项 |
当前内容版权归 ant.design 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 ant.design .