Как использовать canvas в Angular2?
общий подход к использованию canvas в javascript выглядит так:
var canvas = document.getElementById('tutorial');
var ctx = canvas.getContext('2d');
но в Angular2 я не могу получить объект HTMLCanvasElement, var "canvas" получает только HTMLElement в Angular2. Итак, как использовать canvas в Angular2? И, кроме того, как использовать сторонний javascript в Angular2 с помощью языка TypeScript?
2 ответов
если вы не хотите расстраивать угловых богов, используйте @ViewChild
в HTML добавьте ссылку на шаблон.
<canvas #myCanvas></canvas>
в вашем классе сделайте следующее.
import { ViewChild, ElementRef } from '@angular/core';
...
// Somewhere above your class constructor
@ViewChild('myCanvas') myCanvas: ElementRef;
public context: CanvasRenderingContext2D;
// Somewhere under the class constructor we want to wait for our view
// to initialize
ngAfterViewInit(): void {
this.context = (<HTMLCanvasElement>this.myCanvas.nativeElement).getContext('2d');
}
стараюсь держаться подальше от использования документа как можно больше, так как он может укусить вас в долгосрочной перспективе. Также используя @ViewChild
имеет преимущество перед запросом DOM после компиляции приложения. Angular уже заранее знает, какой элемент ему нужно сделать для модификации вместо того, чтобы искать его в доме.
для полного примера проверьте это демо
вы ищете что-то вроде этого?
var canvas: HTMLCanvasElement = <HTMLCanvasElement> document.getElementById('tutorial');
var ctx: CanvasRenderingContext2D = canvas.getContext("2d");