Как использовать редактор tinyMCE для редактирования существующего контента? - PullRequest
0 голосов
/ 10 апреля 2019

Я использую редактор tinyMCE, чтобы позволить пользователям создавать текстовые сообщения.В другом компоненте я хотел бы дать пользователю возможность редактировать сообщения, которые он уже создал.Однако у меня возникли проблемы с настройкой редактора, чтобы он инициализировался текстом, который пользователь хочет отредактировать, предварительно загруженным в тело редактора.

Я пытался возиться с различными параметрами formControl, но не смог найти работающую конфигурацию.

Вот файл .ts для компонента edit-post:

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Params } from '@angular/router';
import { Location } from '@angular/common';
import { FirebaseObjectObservable } from 'angularfire2/database';
import {PostService} from '../post.service';
import { Post } from '../models/post.model';
import { FormControl } from '@angular/forms';
import { tinyApiKey } from '../api-keys';


@Component({
  selector: 'app-edit-detail',
  templateUrl: './edit-detail.component.html',
  styleUrls: ['./edit-detail.component.css'],
  providers: [PostService]
 })

export class EditDetailComponent implements OnInit {
  postToDisplay;
  postId;
  post = new FormControl('');
  apiKey = tinyApiKey;

  constructor(private route: ActivatedRoute, private postService: 
PostService) { }

  ngOnInit() {
    this.route.params.forEach((urlParameters) =>{
      this.postId = urlParameters['id'];
    });
    this.postToDisplay = this.postService.getPostById(this.postId);
  }

}

и hmtl:

<app-nav-bar></app-nav-bar>
<h1>Edit Post</h1>
  <div class="main">
    <div class="post">
      <p [innerHTML]="(postToDisplay | async)?.content"></p>
      <button id="submit-post"(click)="EditPost();">Edit</button>
    </div>
  </div>

  <div class="post-body">
    <editor [apiKey]="apiKey" FormControl="post" [init]="{plugins: 
'link'}"></editor>
  </div>

А вот файл .ts для компонента, который позволяет пользователям создаватьновые сообщения в блоге (это все работает):

import { Component, OnInit} from '@angular/core';
import { Post } from "../models/post.model"
import { PostService } from '../post.service'
import { FirebaseListObservable } from 'angularfire2/database';
import { FormControl } from '@angular/forms';
import { tinyApiKey } from '../api-keys';


@Component({
  selector: 'app-profile-feed',
  templateUrl: './profile-feed.component.html',
  styleUrls: ['./profile-feed.component.css'],
  providers: [PostService]
})
export class ProfileFeedComponent implements OnInit  {

  postBody = null;
  post = new FormControl('');
   apiKey = tinyApiKey;


  showPostBody(){
    this.postBody = 1;
  }
  createPost(){
    this.postBody = null;
  }
  postSubmitted(post: string){
    const newPost: Post = new Post(post);
    this.postService.addPost(newPost)
  }

  constructor(private postService: PostService) {}


  ngOnInit() {
    // this.setProfileInfo();
  }

}

И HTML для этого компонента:

<div class="feed-post" *ngIf="!postBody">
  <div class="start-post" (click)="showPostBody()">
    <button id="new-post">Start a new blog post!</button>
  </div>
</div>



<div class="post-body" *ngIf="postBody">
  <editor [apiKey]="apiKey" [formControl]="post" [init]="{plugins: 
'link'}"></editor>
  <button id="submit-post"(click)="createPost(); 
postSubmitted(post.value);">Share</button>
  <div *ngIf="post.value"class="preview">
    <div class="">Post Preview: <br></div>
    <div [innerHTML]="post.value"></div>
  </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...