#javascript #html #angular
#javascript #HTML #angular
Вопрос:
У меня большая проблема. Я не могу загрузить изображение на холст из папки assets в angular.
html-код
<div class="container-fluid">
<div class="row">
<div class="col-md-8 canvas-viewer">
<canvas width="240" height="297" style="border:1px solid #d3d3d3;" id="crfCanvas" #crfCanvas></canvas>
</div>
<div class="col-md-4 canvas-anno">
</div>
</div>
</div>
component.ts код
export class CanvasComponent implements OnInit {
@ViewChild("crfCanvas", { static: true }) crfCanvas: ElementRef;
constructor() { }
ngOnInit() {
let canvas = this.crfCanvas.nativeElement;
let ctx = canvas.getContext("2d");
let img = new Image();
img.src = "../../assets/aCRF-PRV111_CLN-001 v1.4-images/aCRF-PRV111_CLN-001 v1.4-blank_0.jpg";
ctx.drawImage(img, 10, 10, 250, 250);
}
}
Комментарии:
1. Можете ли вы опубликовать свой файл angular.json?
2. хорошо, я добавлю к вопросу
3. Также проверьте путь к файлу изображения в src
4. @Niladri, не удается опубликовать файл angular.json, в нем 120 строк кода.,
5. Вы можете опубликовать только
assets
раздел
Ответ №1:
Необходимо учитывать несколько вещей:
-
ViewChild привязывается к представлению, поэтому лучше дождаться завершения инициализации представления (используйте хук ngAfterViewInit), но ngOnInit также будет работать (просто, если вам в будущем понадобится учитывать смещения и т.д. Для рисования На canvas, Это может вас укусить 🙂
-
Загрузка изображения выполняется асинхронно, вам необходимо использовать onload hook, прежде чем пытаться нарисовать изображение
-
Используйте URL-адреса «/assets / ..», чтобы избежать проблем
Обновленный код:
export class CanvasComponent implements OnInit {
@ViewChild("crfCanvas", { static: true }) crfCanvas: ElementRef;
constructor() { }
ngAfterViewInit() {
let canvas = this.crfCanvas.nativeElement;
let ctx = canvas.getContext("2d");
let img = new Image();
img.src = "/assets/aCRF-PRV111_CLN-001 v1.4-images/aCRF-PRV111_CLN-001 v1.4-blank_0.jpg";
img.onload = () => {
ctx.drawImage(img, 10, 10, 250, 250);
}
}
}
Стекблитц: https://stackblitz.com/edit/angular-v5tqbn