角生命周期挂钩

时间:2019-07-10 14:05:41

标签: angular hook lifecycle

当我使用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"); } 
} 

1 个答案:

答案 0 :(得分:1)

据我了解,您在所有生命周期挂钩中都添加了console.log()

如果您还在ngAfterContentChecked / ngAfterViewChecked中完成过此操作,则必须记住,每次运行更改检测(应用程序状态更改)并且如果有console.log(),它将无限显示

ngDoCheck是一种执行更改检测的回调方法,该方法在默认更改检测器运行之后被调用,并且每次运行更改检测(应用程序状态更改)时(如果您有console.log()时,都会再次调用)将无限出现。 如果您希望它只运行一次,请使用ngOnInit,ngAfterContentInit或ngAfterViewInit

angular.io/guide/lifecycle-hooks