fix(module: form): prevent building edit context in dead loop (#4254)

This commit is contained in:
James Yeung 2024-10-08 09:46:17 +08:00 коммит произвёл GitHub
Родитель de0cff05d8
Коммит f3d1bf844b
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
1 изменённых файлов: 11 добавлений и 1 удалений

Просмотреть файл

@ -151,6 +151,12 @@ namespace AntDesign
get { return _model; }
set
{
//prevent building edit context in dead loop
if (value is null && _isModelBuildFromNull)
{
return;
}
if (!(_model?.Equals(value) ?? false))
{
var wasNull = _model is null;
@ -249,6 +255,7 @@ namespace AntDesign
private IList<IControlValueAccessor> _controls = new List<IControlValueAccessor>();
private TModel _model;
private FormRulesValidator _rulesValidator;
private bool _isModelBuildFromNull;
ColLayoutParam IForm.WrapperCol => WrapperCol;
@ -496,9 +503,12 @@ namespace AntDesign
if (_editContext == null)
return;
_isModelBuildFromNull = false;
if (Model == null)
{
Model = (TModel)Expression.New(typeof(TModel)).Constructor.Invoke(new object[] { });
_model = (TModel)Expression.New(typeof(TModel)).Constructor.Invoke(new object[] { });
_isModelBuildFromNull = true;
}
var newContext = new EditContext(Model);