根据标题,我很好奇每次用setInterval
创建一个区间时,如果由于Angular完成填充,如果每次间隔运行时都会创建一个更改检测事件。
我一直在阅读我能找到的所有文档,但我找不到明确的答案。
为了澄清,我的问题是,如果我运行以下代码,那么间隔的每次迭代都会触发更改检测事件并导致Angular尝试更新应用程序的视图,直到满足条件为止?
let myInterval = setInterval( () => {
if (conditionsAreMet()){
clearInterval(myInterval);
}
})
答案 0 :(得分:3)
这取决于使用export class AppComponent {
name = 'Angular';
constructor(zone: NgZone) {
// will not trigger change detection
zone.runOutsideAngular(() => {
setInterval(() => {
this.name = 'boob';
}, 2000);
})
的区域。如果它在NgZone中使用,那么是的,它每次都会触发变化检测。如果在角度区域外运行它,它将不会触发变化检测。
外角区:
export class AppComponent {
name = 'Angular';
constructor(zone: NgZone) {
// will not trigger change detection
setInterval(() => {
this.name = 'boob';
}, 2000);
}
在Angular区域内:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
// all requests must be authenticated
.anyRequest().authenticated()
// allow access to static resources
.antMatchers("/css/**", "/images/**", "/js/**", "/webjars/**").permitAll()
.and()
// login form authentication entry point
.formLogin()
.permitAll()
.loginPage("/login")
.usernameParameter("userId")
.and()
// allow unrestricted access to the logout action
.logout()
.logoutUrl("/logout")
.permitAll();
}