我正在尝试将我的项目更新为 Angular9 / Ivy 并面临以下问题。我有一个自定义的“disabledControl”指令,如以下博客(https://netbasal.com/disabling-form-controls-when-working-with-reactive-forms-in-angular-549dd7b42110)中所述。我以反应形式使用它,并带有一个表达式来启用/禁用基于复选框组合的特定控件。由于 Angular9 / Ivy 的更新,当首次调用 @Input 方法 set disableControl 时不再设置 ngControl.control。任何提示我们如何修复建议的博客解决方案?
问问题
887 次
1 回答
3
有一个未解决的问题,您可以找到Angular 问题
Alexey Zuev提供了一个不错的解决方案
解决方案是将 ngOnChanges 生命周期钩子与您的指令一起使用。
这是一个如何使用 ngOnChanges 生命周期挂钩来解决问题的示例。
import { NgControl } from '@angular/forms';
import { Directive, Input, OnChanges } from '@angular/core';
@Directive({
selector: '[disableControl]',
})
export class DisableControlDirective implements OnChanges {
@Input('disableControl') disableControl;
constructor(private ngControl: NgControl) {}
ngOnChanges(changes) {
if (changes['disableControl']) {
const action = this.disableControl ? 'disable' : 'enable';
this.ngControl.control[action]();
}
}
}
于 2020-04-06T07:25:44.583 回答