我正在尝试从此网站-https://docs.photoeditorsdk.com/guides/html5/v4/introduction/getting_started实施HTML5版的PhotoeditorSDK
我尝试使用Angular Github repo来实现,但是package.json似乎说明这仅适用于Angular 5和6,并且我们的应用程序目前已经过时了,因为Angular 4.x(并且我们无法升级到此时的5)
在一个简单的应用程序中使用HTML5方法相当容易,但是在Angular 4中这似乎很棘手,因为由于Angular的限制,我无法在组件中使用<script>
标签。
在索引<head>
中,添加了以下内容:
<head>
<!-- React Dependencies for the SDK UI -->
<script src="js/vendor/react.production.min.js"></script>
<script src="js/vendor/react-dom.production.min.js"></script>
<!-- PhotoEditor SDK-->
<script src="js/PhotoEditorSDK.min.js"></script>
<!-- PhotoEditor SDK UI -->
<script src="js/PhotoEditorSDK.UI.DesktopUI.min.js"></script>
<link rel="stylesheet" href="css/PhotoEditorSDK.UI.DesktopUI.min.css"/>
</head>
在模板本身中,有一个简单的<div>
,如下所示:
<div id="editor" style="width: 100vw; height: 100vh;"></div>
script标记本身如下所示-基本上会附加一个图像,该图像将显示在编辑器中以进行编辑等。
<script>
window.onload = function () {
var image = new Image()
image.onload = function () {
var container = document.getElementById('editor')
var editor = new PhotoEditorSDK.UI.DesktopUI({
container: container,
// Please replace this with your license: https://www.photoeditorsdk.com/dashboard/subscriptions
license: '{"owner":"Imgly Inc.","version":"2.1", ...}',
editor: {
image: image
},
assets: {
// This should be the absolute path to your `assets` directory
baseUrl: '/assets'
}
})
}
image.src = './example.jpg'
}
</script>
我正在尝试找出直接在Angular 4组件中使用<script>
的最佳方法-我知道这是最佳实践,但是什么是最佳方法?
答案 0 :(得分:1)
您的组件具有ID为editor
的元素。这仅在组件的ngAfterViewInit
挂钩中可用。调用此方法后,window.onload
已被调用很久了。同样,在调用onload
时,该元素根本不存在,因此将其放在那里也是一个坏主意。
最好是从组件的ngAfterViewInit
内部调用方法,并使用@ViewChild
批注:
declare const PhotoEditorSDK: any;
@Component({
template: `<div style="width: 100vw; height: 100vh;" #editor></div>`
})
export class EditorComponent implements AfterViewInit {
@ViewChild('editor') editor: ElementRef<HTMLElement>;
ngAfterViewInit(): void {
const image = new Image();
image.addEventListener('load', () => {
const editor = new PhotoEditorSDK.UI.DesktopUI({
container: this.editor.nativeElement,
license: '{"owner":"Imgly Inc.","version":"2.1", ...}',
editor: {
image
},
assets: {
baseUrl: '/assets'
}
});
});
image.src = './example.jpg'
}
}