Угловой крюк жизненного цикла - PullRequest
0 голосов
/ 10 июля 2019

Когда я использую 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 Ответ

1 голос
/ 10 июля 2019

Как я понимаю, вы вставили console.log() во все крючки жизненного цикла.

Если вы также сделали это в ngAfterContentChecked / ngAfterViewChecked, вы должны помнить, что оно выполняется постоянно, каждый раз, когда запускается обнаружение изменений (изменение состояния приложения), и если у вас есть console.log() будет бесконечно

ngDoCheck - это метод обратного вызова, который выполняет обнаружение изменений, вызывается после запуска детектора изменений по умолчанию и снова, каждый раз, когда запускается обнаружение изменений (изменение состояния приложения), если у вас есть console.log (), он появится бесконечно. Если вы хотите, чтобы он запускался только один раз, используйте ngOnInit, ngAfterContentInit или ngAfterViewInit

angular.io / руководство / жизненный цикл крючки

...