У меня проблема с динамически добавленными CKEditors, сгенерированными с помощью NgFor
с [email protected]
.Angular2 и динамически добавлены CKEditors break
@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);
}
}
Вы можете увидеть три CKEditors, которые работают правильно. Затем нажмите кнопку «Добавить» внизу, и он разбивает последний CKEditor в контейнере таким образом, что вы можете даже писать на него, и если вы нажмете любую кнопку на панели инструментов, это будет выбрано:
Uncaught TypeError: Cannot read property 'getSelection' of undefined
.
Интересно, что только последний CKEditor сломан, остальные два работают. Кажется, что Angular2 каким-то образом манипулирует последним элементом, который разбивает CKEditor.
Я помню, используя тот же способ добавления новых CKEditors в [email protected]
, и я думаю, что он работал там, но, возможно, я просто не заметил. Версия [email protected]
is the same.