javascript - 如何从 Javascript 设置 Angular formcontrol 字段的值?
问题描述
我的表单组中有一个“叙述”字段。我已将Nanospell Javascript 拼写检查器添加到我的项目中。
如果有拼写错误的单词并且我让拼写检查器更改它们,拼写检查器会执行其工作并将更正的文本字符串写入window.form1.narrative.value
. 但是,基本的 formcontrol 值仍然是以前拼写错误的单词,除非我在拼写检查完成后在该字段中物理键入或退格一个附加字符。任何用户都不会这样做。拼写检查完成后,他们将单击保存。拼写检查器具有onDialogComplete
Javascript 功能。
如何使用该 Javascript 函数将文本框中的更新值设置为 formcontrol 值,以便保存拼写正确的文本?
解决方案
这是一个完整的 Angular 解决方案,可以让这一切发生:-)
import { Component, OnInit, Input, OnDestroy, AfterViewInit } from '@angular/core';
import { FormGroup, FormControl } from '@angular/forms';
import { EditorFieldInfo } from '@app/shared/models/editorfieldinfo';
import 'tinymce';
declare let tinymce: any;
@Component({
selector: 'rich-text-field',
templateUrl: './rich-text-field.component.html'
})
export class RichTextFieldComponent implements OnInit, OnDestroy, AfterViewInit {
formControl: FormControl;
editor: any;
@Input()
formGroup: FormGroup;
@Input()
fieldDefinition: EditorFieldInfo;
constructor() {
this.fieldDefinition = { name: '??', description:'', placeholder:'', hint:'', fieldtype:'', length:0, defaultValue:'', listValues: null};
}
ngOnInit(): void
{
this.formControl = <FormControl> this.formGroup.get(this.fieldDefinition.name);
}
ngAfterViewInit() {
let textAreaElement = 'mce-' + this.fieldDefinition.name;
this.formControl.valueChanges.subscribe( _ => {
tinymce.init({
base_url: '/tinymce',
suffix: '.min',
selector: '#' + textAreaElement,
toolbar: 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | outdent indent',
menubar: 'edit insert format table tools', branding: false, placeholder: '',
external_plugins: {'placeholder': '/assets/scripts/placeholder.min.js'},
content_style: 'body {font-weight: 400;line-height:1.125;font-family:RO Sans,Calibri,sans-serif;letter-spacing:normal;}',
setup: editor => {
this.editor = editor;
editor.on('change', _ => this.formControl.setValue(editor.getContent()));
}
});
});
}
ngOnDestroy() {
tinymce.remove(this.editor);
}
}
推荐阅读
- python - 类构造函数可以返回子类吗?
- dependency-injection - 如何将 Singleton bean 注入普通 bean
- matlab - 如何使用多个输入创建函数?
- java - 如何将压缩图像保存在新文件夹中
- javascript - 获取当前 url 主机名 NODE
- matplotlib - 如何添加颜色条以使用 jupyter 在我的 3d 曲面图中显示标量值
- spring - spring-cloud-gateway 全局过滤器,用于从访问令牌中提取安全信息并将其中继到下游服务
- angular - 删除行 - 总是在索引返回 -1 时删除最后一行
- php - 方法 Illuminate\Database\Query\Builder::routeNotificationFor 不存在
- sql - 使用 SQL 从 XML 中提取元素