Angular ngOnChange在输入中设置值时不检测更改
我有一个@Input,当它为真时,它会做一些事情。当它为假时,ngOnChange不会检测到Angular ngOnChange在输入中设置值时不检测更改,angular,angular-input,Angular,Angular Input,我有一个@Input,当它为真时,它会做一些事情。当它为假时,ngOnChange不会检测到 @Input() viewMode: boolean; ngOnChanges(changes: SimpleChanges) { if (changes.viewMode.currentValue !== undefined) { if (changes.viewMode.currentValue ) { this.populateForm(this.
@Input() viewMode: boolean;
ngOnChanges(changes: SimpleChanges) {
if (changes.viewMode.currentValue !== undefined) {
if (changes.viewMode.currentValue ) {
this.populateForm(this._event);
}else{
this.doSomething()
}
}
}
setValue(){
this.viewMode = false;
}
当我调用setValue函数时,它不属于ngOnChangengOnChanges只在输入更改来自模板绑定时运行,如。如果您手动设置它,如component.someInput=value,则这发生在更改检测周期之外,您需要以某种方式告知Angular您已经更改了某些内容
如果仍希望触发ngOnChanges,则必须手动执行。i、 e
constructor(private cd: ChangeDetectorRef) {}
setValue(){
this.viewMode = false;
this.cd.detectChanges();
}
希望它能帮助你澄清你的疑问 几天前,我自己也有过这种怀疑。我发现,ngOnChanges不是这样发射的。ngOnChanges仅在组件的输入从外部更改时运行。i、 假设你有 这就变成了, 现在只有angular将运行ngOnchanges。如果希望在该变量的属性发生更改时执行某些操作,则应使用该变量的setter和getter,如下所示: private _viewMode:布尔值; @输入设置视图模式{ 这是。_viewMode=mode; 本次活动的宣传活动; } 获取视图模式{ 返回此选项。\u查看模式; }
现在您可以像这样调用您的函数。setValue,您的表单每次都会填充。console中是否有任何错误?打印if.中的值。。else条件。请确保您在父级中有类似的内容。您不能调用此。poupulateForm inside setValue方法吗?@Chellappan否我有editableMode和viewMode我更改状态曾经更改值未检测到更改:/