Angular使用Input()在组件之间传递数据不会触发ngOnChanges



我有两个组件父组件和子组件,我使用@Input()在父组件和子组件之间传递数据。在初始化时,我从父节点获取数据。但是在改变了这些数据之后,它并没有反映在子输入组件中。

我没有使用onPush策略。

contacts-at-company.component - html,其中包含如下contacts-at-company-results组件;

<contacts-at-company-results
*ngIf="!isPersonSearchLoading && isShowingResults && !showFilters"
[personList]="personList">
</contacts-at-company-results>

personList是contacts-at-company-results组件中的一个输入

当我在代码中更改personList时,它不会反映在子组件中并且ngOnChanges不会被调用。

export classContactsAtCompanyResultsComponent implements OnInit, OnChanges {
@Input() personList;
ngOnChanges(changes: SimpleChanges) {
alert(changes);
}

:

updateSearchResults(data) {
this.personList = [...data];
}

尝试创建一个新的引用

updateSearchResults(data) {
this.personList = [... data] ;
}

ngOnChanges()仅在变更检测更新绑定到@Input()时调用。如果输入是命令式地从某处更改的,则不会调用它。

personList设置为getter/setter,以便每次属性更新时执行。

最新更新