new-status.component.ts
<mat-form-field>
<textarea matInput placeholder="Status Content" style="height: 200px;"></textarea>
<emoji-mart title="Pick your emoji…" emoji="point_up"></emoji-mart>
</mat-form-field>
我点击此链接以获取解决方案(https://github.com/TypeCtrl/ngx-emoji-mart),现在我想将表情符号选择器放置在输入字段或文本区域中。
答案 0 :(得分:4)
我知道它晚了,但也许其他人可以使用它。
我改进了那些可用的解决方案。 表情符号应该插入胡萝卜位置,我们应该能够撤消,重做消息框 这是解决方案。
HTML
<textarea #input [formControl]="message" (keydown.enter)="send()"> </textarea>
<emoji-mart
title="Pick your emoji…"
(emojiSelect)="addEmoji($event)"
[hideObsolete]="true"
[isNative]="true">
</emoji-mart>
TS
addEmoji(selected: Emoji) {
const emoji: string = (selected.emoji as any).native;
const input = this.input.nativeElement;
input.focus();
if (document.execCommand){ // document.execCommand is absolute but it //add support for undo redo and insert emoji at carrot position
//any one has better solution ?
var event = new Event('input');
document.execCommand('insertText', false, emoji);
return;
}
// insert emoji on carrot position
const [start, end] = [input.selectionStart, input.selectionEnd];
input.setRangeText(emoji, start, end, 'end');
}
答案 1 :(得分:3)
让我们开始
npm install @ctrl/ngx-emoji-mart
然后
import { PickerModule } from '@ctrl/ngx-emoji-mart'
将样式表添加到angular.json:
"styles": [
"src/styles.css",
"../node_modules/@ctrl/ngx-emoji-mart/picker.css"
],
将模块添加到app.module.ts的imports数组中:
@NgModule({
...,
imports: [ ..., PickerModule, ... ],
...
})
最后添加测试,以查看是否所有工作都在app.component.html中:
<emoji-mart title="Pick your emoji…" emoji="point_up"></emoji-mart>
就这样:-)
https://stackblitz.com/edit/angular-rxanqx?file=src%2Fapp%2Fapp.component.html
编辑
您需要使用一种原始方法进行样式化。
https://stackblitz.com/edit/angular-rxanqx
您有一个textarea按钮,用于向文本添加表情符号。
让我知道这是否是开始的好方法:-)
答案 2 :(得分:0)
npm install @ctrl/ngx-emoji-mart
然后在您的模块中。
import { PickerModule } from '@ctrl/ngx-emoji-mart'
在您的styles.scss中添加其样式
@import '~@ctrl/ngx-emoji-mart/picker';
在您的component.html
中<form [formGroup]="emojiForm">
<emoji-mart (emojiClick)="addEmoji($event)" emoji="point_up"></emoji-mart>
<textarea type="text" formControlName="inputField"></textarea>
</form>
在你的component.ts中
addEmoji($event){
let data = this.emojiForm.get('inputField');
data.patchValue(data.value + $event.emoji.native)
}