![](/img/trans.png)
[英]Angular child component not destroyed when next item on parent has same variable value for ngIf on selector
[英]How to get previous value when component has been destroyed in Angular
我有组件并循环渲染它(ngFor)该组件有一个 object
@Input() a = {
name: 'Bob'
}
更改后,它将其输入参数重置为初始 state 当组件发生更改时,我想获取其初始初始化时的值 SCENARIO: -> @Input() a = {name: 'Bob'}
( init value) -> 然后做点什么... this.a.name = 'Alice'
; -> 在循环中,object 发生变化 -> 再一次,组件很重要@Input() a = {name: 'Bob'}
(init value) 我想在组件更新后获取先前的值,即 '爱丽丝'
ngOnChanges(changes: SimpleChanges) {
if(changes.a) {
let chng = changes.a;
let cur = JSON.stringify(chng.currentValue);
let prev = JSON.stringify(chng.previousValue);
}
}
因此,您需要.currentValue
和.previousValue
属性来访问当前值和以前的值。
编辑:1
如果组件被破坏,您必须使用某种 state 管理 - 带有主题、会话存储、本地存储或其他内容的服务
编辑:2
您可以扩展 ngFor 指令并在 ngOnChanges 中添加 state 逻辑。
@Directive({
selector: '[ngFor][ngForIn]'
})
export class NgForIn extends NgFor implements OnChanges {
@Input() ngForIn: any;
constructor(viewContainer: ViewContainerRef,
template: TemplateRef<NgForRow>,
differs: IterableDiffers,
cdr: ChangeDetectorRef) {
super(viewContainer, template, differs, cdr);
}
ngOnChanges(changes: SimpleChanges): void {
// Do something here
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.