微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当父更新子时不调用 ngOnChange

如何解决当父更新子时不调用 ngOnChange

我想知道 ngOnChanges 回调是如何工作的。所以我添加了它来观察用 Input 装饰器注释的属性的变化,如下所示:

np.busday_count

现在,当我编译代码时,我添加了一些值,这些值会导致用@Input 注释的属性发生变化,但这不会导致调用和执行 ngOnChanges 回调。请查看下面发布的屏幕截图中显示的日志。

我想查看浏览器中显示的 ngOnChanges 中的日志。 请让我知道是什么阻止了 ngOnChanges 被正确调用调用

app.component.ts

@input() postsToAddToList: Post[] = [];

app.component.html

import { Component } from '@angular/core';
import { Post } from './post-create/post-create.component';

@Component({
  selector: 'app-root',templateUrl: './app.component.html',styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'binding2';
  postsArray: Post[] = [];

  onReceiveSubmittedEvtEmitter(post: Post) {
    this.postsArray.push(post);
    console.log("onReceiveSubmittedEvtEmitter->: post.title: " + post.title);
    console.log("onReceiveSubmittedEvtEmitter->: post.content:" + post.content);
  }
}

post-list.component.ts

<app-post-create (onPostSubmittedEvtEmitter)="onReceiveSubmittedEvtEmitter($event)"></app-post-create>
<app-post-list [postsToAddToList]="postsArray"></app-post-list>

post-list.component.html

import { Component,Input,OnInit,OnChanges,SimpleChanges,Output,EventEmitter } from '@angular/core';
import { Post } from '../post-create/post-create.component';

@Component({
  selector: 'app-post-list',templateUrl: './post-list.component.html',styleUrls: ['./post-list.component.css']
})
export class PostListComponent implements OnInit {

  constructor() {}

  @input() postsToAddToList: Post[] = [];
  ngOnInit(): void {}
  
  ngOnChanges(changes: SimpleChanges) {

    for (let changedProperty in changes) {
      if (changes.hasOwnProperty(changedProperty)) {
        
        console.log("ngOnChanges->: changedProperty: " + changedProperty);
        console.log("ngOnChanges->: changedProperty:" + changedProperty);

        switch(changedProperty) {
          case 'postsToAddToList':
            console.log("ngOnChanges->: changes[changedProperty].prevIoUsValue: " + changes[changedProperty].prevIoUsValue);
            console.log("ngOnChanges->: changes[changedProperty].currentValue):" + changes[changedProperty].currentValue);
            break;
        }
      }
    }
  }
}

错误屏幕截图

how to use (np.busday_count) with pandas.core.series.Series

解决方法

由于您在父组件中使用 push(),因此不会在子组件中调用 ngOnChanges。您可以不使用 push(),而是在每次发生更改时将值重新分配给 postsToAddToList

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。