我正在努力深入了解角度,所以我阅读了文档,这非常有帮助.
现在我正在研究守卫.我在文档中读到了这个陈述.
路由器首先检查CanDeactivate和CanActivateChild防护,从最深的子路由到顶部.然后它从上到下检查CanActivate警卫到最深的子路线.
现在我很困惑,为什么角度以这种方式执行它?
对于CanDeactivate和CanActivateChild,从最深的孩子到顶部进行检查有什么好处.从顶部到CanActivate最深的儿童路线?
在组件生命周期中,我们有不同的接口跟踪组件
生命周期中的不同阶段,例如.OnInit,OnChanges,OnDestroy ..etc
在运行时如何使用angular触发那些方法?
对于前 当@Input数据现在改变时触发ngOnChanges()
Angular有这个逻辑我假设
1-只要角度检测在@input数据中发生变化
2-角度检查该组件类是否实现OnChanges
3-如果为true则触发ngOnChanges( )
并且每个生命周期钩子都有一些逻辑,
这是角度触发生命周期钩子的方式吗?
我正在使用HTML画布绘制线,如下图所示,但该线在其两侧都有一条边。
如图中所示,两个边缘不垂直于主线。
我尝试了以下解决方案,但没有成功:
*旋转边缘线,但是旋转会将其从原始位置变换
*找到主线的角度,然后相对于该线绘制线,但是此解决方案实施起来并不容易(很可能我实施错误)。
这是我的代码,但是它将始终绘制垂直边缘:
<!DOCTYPE html>
<html>
<body>
<canvas id="myCanvas" width="200" height="200" style="border:1px solid #d3d3d3;">
<script>
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var x1 = 100;
var x2 = 150;
var y1 = 50;
var y2 = 120;
ctx.beginPath();
ctx.strokeStyle = "purple"; // Purple path
ctx.moveTo(x1,y1);
ctx.lineTo(x2,y2);
ctx.stroke(); // Draw it
ctx.beginPath();
ctx.moveTo(x1,y1);
ctx.lineTo(x1,y1+10);
ctx.stroke();
ctx.restore();
ctx.beginPath();
ctx.moveTo(x1,y1);
ctx.lineTo(x1,(y1-10));
ctx.stroke();
ctx.beginPath();
ctx.moveTo(x2,y2);
ctx.lineTo(x2,y2+10);
ctx.stroke();
ctx.restore();
ctx.beginPath();
ctx.moveTo(x2,y2);
ctx.lineTo(x2,(y2-10));
ctx.stroke();
</script>
</body>
</html> …Run Code Online (Sandbox Code Playgroud)