angular - 为什么 ElementRef to Canvas 在这里不起作用?
问题描述
我尝试将图像加载到画布中。
在模板中
<canvas #myca id="mycanvas" style="width: 600px; height; 600px; border: 2px red solid;" (mousedown)="mdown ($event)"></canvas>
在组件中
@ViewChild('myca', {static: false}) myca: ElementRef <HTMLCanvasElement>;
ngOnInit ()
{
// ctx by id works!
//var ctx = (<HTMLCanvasElement> document.getElementById('mycanvas')).getContext('2d');
// ctx by ElementRef fails!
var ctx = this.myca.nativeElement.getContext('2d');
var img1 = new Image();
img1.src = "http://any_img_you_want.jpg";
img1.onload = function ()
{
ctx.drawImage (img1, 0, 0);
}
}
如果我通过 id 获得 ctx,它就可以工作。如果我通过 ElementRef 来做,它会失败。这里有什么问题?
解决方案
是选角的问题。下面的代码应该可以工作:
@ViewChild('myca') myca: ElementRef;
ngOnInit () {
const ctx = (<HTMLCanvasElement>this.myca.nativeElement).getContext('2d');
var img1 = new Image();
img1.src = "http://any_img_you_want.jpg";
img1.onload = function () {
ctx.drawImage (img1, 0, 0);
}
}
推荐阅读
- php - PHP:仅当存在替换时才更新字段。如果没有,保持不变
- java - 等待来自其他线程的回调
- r - R包在DESCRIPTION中声明作者
- geode - Spring Data Geode Region 有本地作用域,无法监听远程 Region 事件
- java - 创建或更改状态栏颜色的正确方法是什么?
- c++ - GSL 示例代码的未定义符号编译错误
- python - 无法在网络外访问 dockerized Flask 应用程序
- python - Discord.py:在烧瓶应用程序中向某人发送消息
- google-cloud-platform - 是否可以在基本版或企业版中将我自己的自定义转换插件添加到云数据融合中。请赐教
- javascript - 强制结束nodejs中的路由