如何使用表情符号选择器使输入字段或文本区域成角度?

时间:2018-08-13 09:05:07

标签: html angular emoji

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),现在我想将表情符号选择器放置在输入字段或文本区域中。

3 个答案:

答案 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)
}