我有两个组件父组件和子组件,我使用@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,以便每次属性更新时执行。