Я использую ckEditor для редактирования контента в приложении Angular.Для загрузки изображений в ClouFirestore, я написал адаптер загрузки (ссылка: StackOverflowAlanObject , как показано ниже,
import { Injectable, EventEmitter } from '@angular/core';
import {AngularFirestore, Reference} from "angularfire2/firestore";
import { AngularFireUploadTask, AngularFireStorage } from 'angularfire2/storage';
import { Observable, pipe } from 'rxjs';
@Injectable()
export class CkUploadAdapter {
task: AngularFireUploadTask;
public percentage: Observable<number>;
public snapshot: Observable<any>;
getURL = new EventEmitter<string>();
isHovering: boolean;
loader; // your adapter communicates to CKEditor through this
url;
constructor(loader, url, private storage?: AngularFireStorage, private db?: AngularFirestore) {
this.loader = loader;
this.url = url;
console.log('Upload Adapter Constructor', this.loader, this.url);
}
upload() {
this.loader.file.then( file => {
this.path = this.url+`/${new Date().getTime()}_${file.name}`;
return new Promise( ( resolve, reject ) => {
this.storage.upload(this.path, file.name, {customMetadata: this.customMetadata});
});
}
abort() {
console.log('UploadAdapter abort');
}
}
В методе upload () в строке this.storage.upload (path, this.loader.file, {customMetadata: customMetadata}), браузер выводит предупреждение «Не удается прочитать загрузку свойства неопределенного». Ошибка генерируется zone.js. AngularFireStorage на консоли также показывает неопределенное.
Внутри класса компонентов я использую приведенный ниже код для установки адаптера загрузки для ckEditor.
ckUploadAdapterPlugin(ckEditor) {
ckEditor.plugins.get('FileRepository').createUploadAdapter = (loader) => {
return new CkUploadAdapter(loader, '/test', ckEditor.t);
};
}
Есть идеи, что здесь не так? Или мой подход неверен? Спасибо за ваши предложения!