typescript – angular2 wysiwyg tinymce实现和双向绑定

前端之家收集整理的这篇文章主要介绍了typescript – angular2 wysiwyg tinymce实现和双向绑定前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
嗨,我正在尝试将tinymce实现为一个角度2组件,用于创建新线程的小型论坛.
我希望textarea(tinymce)的内容被双向绑定到组件内的变量.到目前为止,提交按钮有效,但keyup事件没有.
  1. export class ForumNewThreadComponent implements OnInit{
  2.  
  3. constructor(){}
  4. ngOnInit():any {
  5. tinymce.init(
  6. {
  7. selector: ".tinyMCE",})
  8. }
  9.  
  10. text:string;
  11. submit(){
  12. this.text = tinymce.activeEditor.getContent();
  13. }
  14. getTinymceContent(){
  15. this.text = tinymce.activeEditor.getContent();
  16. }
  17. }

并查看

  1. <div class="thread-body">
  2. {{getValue}}
  3. <textarea class="tinyMCE" style="height:300px" (keyup)="getTinymceContent()">
  4.  
  5. </textarea>
  6. <button class="btn btn-primary" (click)="submit()">Submit</button>
  7. </div>
我会为此实现一个自定义值访问器:
  1. const TINY_MCE_VALUE_ACCESSOR = new Provider(
  2. NG_VALUE_ACCESSOR,{useExisting: forwardRef(() => TinyMceValueAccessor),multi: true});
  3.  
  4. @Directive({
  5. selector: 'textarea[tinymce]',host: { '(keyup)': 'doOnChange($event.target)' },providers: [ TINY_MCE_VALUE_ACCESSOR ]
  6. })
  7. export class DateValueAccessor extends DefaultValueAccessor {
  8. @Input()
  9. tinymce:any;
  10.  
  11. onChange = (_) => {};
  12. onTouched = () => {};
  13.  
  14. writeValue(value:any):void {
  15. if (value!=null) {
  16. super.writeValue(value.toString());
  17. }
  18. }
  19.  
  20. doOnChange(elt) {
  21. this.onChange(this.tinymce.activeEditor.getContent());
  22. }
  23. }

我会这样用它:

  1. <textarea [tinymce]="tinymce" style="height:300px" [(ngModel)]="text">
  2.  
  3. </textarea>

并在您的组件类中:

  1. @Component({
  2. (...)
  3. directives: [ DateValueAccessor ]
  4. })
  5. export class ForumNewThreadComponent implements OnInit{
  6. constructor(){}
  7. ngOnInit():any {
  8. tinymce.init({
  9. selector: "[tinymce]"
  10. })
  11. }
  12.  
  13. text:string;
  14. }

猜你在找的Angularjs相关文章