这是关于Angular中的变化检测。
他们说,“如果组件的属性在Angular 之外更改,您可能希望使用detectChanges
方法,因此不会为此安排更改检测周期。否则,使用markForCheck
方法。“
所以在这一刻,我想知道代码的哪些情况/部分会被视为在Angular之外?
答案 0 :(得分:1)
典型的应用程序很少会发生“外部角度”发生的事件,但它们可能会发生。一个很好的例子就是第三方控制您在应用中的消费,例如图像轮播。由于页面上的这个元素是由Angular之外的库创建的,因此Angular不知道何时运行更改检测。要继续该示例,请假设用户单击向右箭头以推进幻灯片放映。由于此事件是通过非Angular库连接的,因此Angular不知道对组件执行检查。这是开发人员需要手动运行更改检测周期以查看组件上是否需要更新的地方。
您还可以创建一个组件并将其从Angular变化检测中“分离”。原因是,组件可能会触发大量通常会导致更改检测的事件。典型的例子是股票代码每100ms更新一次。如果组件未分离,则每个事件都会强制Angular执行更改检测周期。但是,如果您分离开发人员可能具有战略意义,并且只有在实际更改了值时才执行更改检测周期。