Перерисовка линии холста в Angular на основе ввода - PullRequest
0 голосов
/ 14 апреля 2019

У меня есть вход с двухсторонним связыванием, который должен дать мне число, чтобы я мог нарисовать линию внутри круга на холсте, делая угол этого градуса с центром.

Я думаю, что само двустороннее связывание работает нормально

Но оно не перерисовывает холст для создания угла.Приложение не имеет реакции на ввод.Если я вручную изменяю значение свойства градусов, то оно работает.Я немного искал и узнал о ngOnChanges () , но, похоже, это тоже не работает, по крайней мере, так, как я пытаюсь его использовать.

мой код:

import { ViewChild, Component, OnInit, ElementRef } from "@angular/core";
import { CircleApp } from "./circleApp";
@Component({
  selector: "app-make-circle",
  templateUrl: "./make-circle.component.html",
  styleUrls: ["./make-circle.component.css"]
})
export class MakeCircleComponent implements OnInit {
  circleApp: CircleApp = {
    degrees: 0 
  };
  @ViewChild("myCanvas") myCanvas: ElementRef;
  public context: CanvasRenderingContext2D;
  constructor() {}
  ngOnInit() {}
  ngAfterViewInit(): void {
    this.context = (this.myCanvas
      .nativeElement as HTMLCanvasElement).getContext("2d");
    this.draw();
  }

  ngOnChanges() {
    this.draw();
  }

  private draw() {
    this.context.beginPath();
    this.context.arc(150, 150, 100, 0, Math.PI * 2);
    this.context.moveTo(150, 150);
    this.context.lineTo(
      Math.cos((-this.circleApp.degrees * Math.PI) / 180) * 100 + 150,
      Math.sin((-this.circleApp.degrees * Math.PI) / 180) * 100 + 150
    );
    this.context.stroke();
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...