当我使用firebase js sdk进行一个有角度的项目并实现生命周期挂钩(例如afterviewinit)并在控制台上编写内容时,控制台消息会再次重复无穷大的时间。我希望该消息只出现一次在控制台上。
感谢您解决此问题
AppModule {
constructor(){
firebase.initializeApp(environment.firebase);
}
}
import { Component, DoCheck } from '@angular/core';
import { UserService } from ...;
@Component({
selector: 'app-navbar',
templateUrl: './navbar.component.html'
})
export class NavbarComponent implements DoCheck {
public isCollapsed = true;
isLoggedIn = false;
constructor(public userService: UserService) {}
ngDoCheck(){ console.log("navbar docheck"); }
}
答案 0 :(得分:1)
据我了解,您在所有生命周期挂钩中都添加了console.log()
。
如果您还在ngAfterContentChecked
/ ngAfterViewChecked
中完成过此操作,则必须记住,每次运行更改检测(应用程序状态更改)并且如果有console.log()
,它将无限显示
ngDoCheck是一种执行更改检测的回调方法,该方法在默认更改检测器运行之后被调用,并且每次运行更改检测(应用程序状态更改)时(如果您有console.log()时,都会再次调用)将无限出现。 如果您希望它只运行一次,请使用ngOnInit,ngAfterContentInit或ngAfterViewInit