更新输入变量时子组件不更新 - Angular
child component doesn't update when I update input variable - Angular
我有子组件,在此我将父组件的值作为输入传递。在父组件中,我在事件发射器触发器上更新了这个输入变量,但子组件没有更新。我已经检查了输入变量更新的预兆。为什么子组件不更新?
ParentComponent.html
<app-child
[data]="data"
(filterEmmiter)="filter($event)">
</app-child>
ParentComponent.ts
data: any;
.
.
.
getUsers() {
this.usersService.getAllUsers().subscribe(res => {
this.data = res;
});
}
.
.
.
filter(data){
this.data = data
}
您的子组件应该公开一个 EventEmitter
。
@Output() filteremmiter = new EventEmitter<any>();
你可以这样试试,这里你想从parent组件获取数据到child组件,这里你的parent组件是ParentComponent
和child 组件是 app-child
所以这里为了获取从 parent 到 child 的数据我们可以使用 ngOnChanges(changes: SimpleChanges)
ParentComponent.html
<app-child
[data]="data"
(filterEmmiter)="filter($event)">
</app-child>
child.component.ts
import {Component, OnChanges, SimpleChanges, Input} from '@angular/core';
class Child implements OnInit, OnChanges {
@Input() Data: any; // here is the data variable which we are getting from the parent
constructor() {}
ngOnchanges(changes: SimpleChanges) {
console.log(changes); // here you will get the data from parent once the input param is change
}
}
最近我也遇到了类似的事情,在我的情况下,在子对象中使用 Onchanges 方法,我看到输入更改发生在我想要执行的逻辑之后,然后输入的新值没有'这个逻辑没有体现出来。
我所做的是在我分配输入数据的地方强制检测更改,如下所示:
我将其添加到我的构造函数中
constructor( private changeDetector: ChangeDetectorRef) {}
然后我给数据赋值
this.data=something
this.changeDetector.detectChanges();
在那之后,我注意到首先调用了 onChanges 方法,然后调用了输入新值的逻辑,之后我只是手动设置了应该放在 Onchanges 方法中的输入值子组件
ngOnChanges(changes: SimpleChanges): void {
this.put= changes.input.currentValue;
}
我有子组件,在此我将父组件的值作为输入传递。在父组件中,我在事件发射器触发器上更新了这个输入变量,但子组件没有更新。我已经检查了输入变量更新的预兆。为什么子组件不更新?
ParentComponent.html
<app-child
[data]="data"
(filterEmmiter)="filter($event)">
</app-child>
ParentComponent.ts
data: any;
.
.
.
getUsers() {
this.usersService.getAllUsers().subscribe(res => {
this.data = res;
});
}
.
.
.
filter(data){
this.data = data
}
您的子组件应该公开一个 EventEmitter
。
@Output() filteremmiter = new EventEmitter<any>();
你可以这样试试,这里你想从parent组件获取数据到child组件,这里你的parent组件是ParentComponent
和child 组件是 app-child
所以这里为了获取从 parent 到 child 的数据我们可以使用 ngOnChanges(changes: SimpleChanges)
ParentComponent.html
<app-child
[data]="data"
(filterEmmiter)="filter($event)">
</app-child>
child.component.ts
import {Component, OnChanges, SimpleChanges, Input} from '@angular/core';
class Child implements OnInit, OnChanges {
@Input() Data: any; // here is the data variable which we are getting from the parent
constructor() {}
ngOnchanges(changes: SimpleChanges) {
console.log(changes); // here you will get the data from parent once the input param is change
}
}
最近我也遇到了类似的事情,在我的情况下,在子对象中使用 Onchanges 方法,我看到输入更改发生在我想要执行的逻辑之后,然后输入的新值没有'这个逻辑没有体现出来。
我所做的是在我分配输入数据的地方强制检测更改,如下所示:
我将其添加到我的构造函数中
constructor( private changeDetector: ChangeDetectorRef) {}
然后我给数据赋值
this.data=something
this.changeDetector.detectChanges();
在那之后,我注意到首先调用了 onChanges 方法,然后调用了输入新值的逻辑,之后我只是手动设置了应该放在 Onchanges 方法中的输入值子组件
ngOnChanges(changes: SimpleChanges): void {
this.put= changes.input.currentValue;
}