gpt4 book ai didi

ckeditor - Angular2 - CKEditor 使用

转载 作者:行者123 更新时间:2023-12-02 21:46:08 26 4
gpt4 key购买 nike

如何将 ckeditor 与 Angular2 组件一起使用?

做类似的事情:

import {Component} from 'angular2/core'

@Component({
selector: 'e',
template: `
<textarea name="editor1" id="editor1" rows="10" cols="80">
This is my textarea to be replaced with CKEditor.
</textarea>
<script>
CKEDITOR.replace( 'editor1' );
</script>
`
})

export class E {

}

并在index.html中打印它,例如:

<html>
<head>
<title>Hello</title>
<script src="../ckeditor/ckeditor.js"></script>
<script src="../systemjs/dist/system.src.js"></script>
<script src="../es6-shim/es6-shim.js"></script>
<script src="../angular2/bundles/angular2-polyfills.js"></script>
<script src="../rxjs/bundles/Rx.js"></script>
<script src="../angular2/bundles/angular2.dev.js"></script>
<script src="../angular2/bundles/router.dev.js"></script>
<script src="../angular2/bundles/http.dev.js"></script>
<script src="http://fgnass.github.io/spin.js/spin.min.js"></script>
<script>
System.config({
packages: {
compiled: {
format: 'register',
defaultExtension: 'js'
}
}
});
System.import('../compiled/boot')
.then(null, console.error.bind(console));
</script>
</head>
<body>
Hackathon incoming!
<e>Loading...</e>
</body>
</html>

不起作用。当我将所有带有脚本代码的文本区域放在index.html 中时效果很好,但我真的想将它放在组件模板中。就像 ckeditor 在组件中看不到 textarea ID 一样。

如何使 ckeditor 插件与 Angular2 组件配合良好?谢谢

最佳答案

不要将脚本添加到您的模板中。使用这个代替

import {Component} from 'angular2/core'

declare const window: any;

@Component({
selector: 'e',
template: `
<textarea name="editor1" id="editor1" rows="10" cols="80">
This is my textarea to be replaced with CKEditor.
</textarea>
`
})
export class E {
constructor(){}
ngOnInit(){
if(window.CKEDITOR) {
window.CKEDITOR.replace('editor1');
}
}
}

更新:

检查 Angular2 lifecycle hooks ,并且由于组件是 javascript,因此您可以从组件内部执行任何脚本代码。

更好的方法

实现一个将像这样使用的CKEDITOR组件

<CKEditor [targetId]="editor1" [rows]="10" [cols]="80"> </CKEditor>

ckeditor.component.ts

import {Component, Input} from 'angular2/core';

declare const window: any;

@Component({
selector: 'CKEditor',
template: `
<textarea name="targetId" id="targetId" rows="rows" cols="cols">
This is my CKEditor component.
</textarea>
`
})
export class CKEditorComponent {

@Input() targetId;
@Input() rows = 10; //you can also give default values here
@Input() cols;

constructor(){}

ngOnInit(){
if(window.CKEDITOR) {
window.CKEDITOR.replace('editor1');
}
}
}

最好的方法

获取CKEditor的typescript定义文件,我找到了here 。将其添加到您的项目中,之后您就可以使用该库了。

这仅用于说明,未经测试。

import * as CKEDITOR from 'CKEDITOR/PATH';   
.
.
ngOnInit(){
CKEDITOR.replace( targetId );
}

关于ckeditor - Angular2 - CKEditor 使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35978025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com