У меня есть приложение Angular 7, которое использует реактивные формы для создания записей. Я интегрировал редактор Tinymce согласно этим инструкциям и использую его для одного из полей. Я могу создать новую запись, используя форму, и содержимое из редактора tinymce будет правильно сохранено в базе данных. Однако когда я загружаю запись из базы данных, запись для всех полей заполняется в форме, кроме значения для редактора. Редактор загружается, но содержимое не отображается.
Вот HTML:
<h1>
Article editing
</h1>
<p>{{error}}</p>
<form [formGroup]="articleForm" >
<div class="form-group">
<label for="articleTitle">Article Title:</label>
<input class="form-control" type="text" formControlName="articleTitle">
</div>
<div class="form-group">
<label for="longFormText">
Long Form Text:
</label>
<editor style="min-height: 500px;"
apiKey="mykeyvalue"
[init]="{plugins: 'link', toolbar: 'undo redo | bold italic | bullist numlist outdent indent'}"
id="longFormTextEditor"
formControlName="longFormText"
>
</editor>
</div>
<button type="button" class="btn btn-default"
[disabled]="!articleForm.valid" value="Submit" (click)="onSubmit()"
>Submit</button>
</form>
и вот файл ts:
import { Component, OnInit, AfterViewInit } from '@angular/core';
import { FormGroup, FormBuilder } from '@angular/forms';
import { ArticleService } from 'src/app/services/article.service';
import { Article } from 'src/app/models/Article';
import { AppStateService } from 'src/app/services/app-state.service';
import { ActivatedRoute } from "@angular/router";
declare let tinymce:any;
@Component({
selector: 'app-article-edit',
templateUrl: './article-edit.component.html',
styleUrls: ['./article-edit.component.css']
})
export class ArticleEditComponent implements OnInit, AfterViewInit {
error:any;
ok:Article;
articleForm:FormGroup ;
article:Article;
articleId:number;
editor;
constructor(private articleService:ArticleService, private fb:FormBuilder,
private route:ActivatedRoute) {
this.articleId = this.route.snapshot.params.id;
}
ngOnInit() {
this.articleForm = this.fb.group({
articleTitle: [],
rank: [1],
articleSummary: [],
longFormText: [],
readyToPublish: [false],
tweetTitle: [],
tweetText: [],
tweetId: [],
linkedInTitle: [],
linkedInText: [],
linkedInId: [],
dateCreated: [new Date().toISOString().split('T')[0]],
dateLastSaved: [new Date().toISOString().split('T')[0]],
imageUrl1: []
});
}
ngAfterViewInit() {
if (this.articleId != undefined) {
this.articleService.getSingle(this.articleId).subscribe(
x => {
this.article = x;
this.populateForm();
}
)
}
}
populateForm() {
this.articleForm.patchValue({
articleTitle: [this.article.articleTitle],
longFormText: [this.article.longFormText]
});
}
onSubmit() {
if (this.articleForm != undefined) {
let a:Article = this.articleForm.value;
this.articleService.add(a).subscribe(x => this.ok = x, error => this.error = error );
}
}
}