обновление свойств родительского компонента angular не запускает методы в дочернем компоненте

#angular

#angular

Вопрос:

У меня есть следующий код в родительском компоненте

 ngOnInit(): void {
    this.service.method().subscribe(r => {
        this.data = r;
    });
}
 

Этот компонент использует дочерний компонент следующим образом

         <childComponent [data]="data">
        </childComponent>
 

Теперь дочерний компонент имеет следующий метод

 ngOnInit(): void {
     if (!this.childProperty) return;

    // do some processing here
}
 

Проблема, с которой я сталкиваюсь, заключается в том, что изначально при ngOnInit запуске на дочернем компоненте нет данных, поскольку service.method() он не запускался на родительском компоненте. После возврата данных дочерний компонент должен запуститься ngOnInit снова, но как мне это сделать?

Ответ №1:

Вы можете добавить условие в шаблон, например

 <childComponent [data]="data" *ngIf="data amp;amp; data.length > 0">
</childComponent>
 

Так что, как только данные будут доступны, только он отобразит компонент.

или

Другой способ — это сделать, вы можете реализовать ngOnChanges() вместо ngOnInit() , поэтому всякий раз, когда свойство ввода получает изменения (после вызова API), оно вызывает этот перехват, и вы можете выполнить свою обработку в этом перехвате.