У меня проблема с динамически добавленными CKEditors, визуализируемыми через NgFor
с [email protected]
.
@Directive({
selector: 'textarea'
})
class CKEditor {
constructor(_elm: ElementRef) {
CKEDITOR.replace(_elm.nativeElement);
}
}
@Component({
selector: 'my-app',
})
@View({
directives: [NgFor, CKEditor],
template: `
<div *ng-for="#item of items">
{{ item }}: <textarea>{{ item }}</textarea>
</div>
<button (click)="addItem()">Add</button>`
})
class AppComponent {
items = ['default_0', 'default_1'];
constructor() {
this.addItem();
}
addItem() {
var id = 'ckeditor_inst_' + this.items.length;
this.items.push(id);
}
}
Вы можете увидеть три корректно работающих редактора CKEditor. Затем нажмите кнопку «Добавить» внизу, и он разбивает последний CKEditor в контейнере таким образом, что вы даже можете писать в него, и если вы нажмете любую кнопку на панели инструментов, он выдает:
Uncaught TypeError: Cannot read property 'getSelection' of undefined
.
Интересно, что ломается только последний CKEditor, остальные два работают. Похоже, что Angular2 каким-то образом манипулирует последним элементом, который ломает CKEditor.
Я помню, как использовал тот же способ добавления новых CKEditors в [email protected]
, и я думаю, что там это сработало, но, возможно, я просто не заметил. Версия [email protected]
такая же.