как захватить, если компонент EditForm «грязный» в веб-сборке Blazor - PullRequest
1 голос
/ 21 февраля 2020

Есть ли эквивалент * концепции грязных форм в Angular для EditForm в Blazor Webassembly? Я хотел бы показать текст "Вы внесли изменения. Любые несохраненные изменения будут потеряны!" чтобы указать пользователю, что что-то еще не сохранено, и перед отправкой нужно нажать кнопку «Отправить».

1 Ответ

1 голос
/ 21 февраля 2020

Да, есть, но мы не используем грязные слова, мы используем модифицированные или неизмененные.

Класс EditContext предоставляет следующее:

 /// <summary>
    /// Determines whether any of the fields in this <see cref="EditContext"/> have been modified.
    /// </summary>
    /// <returns>True if any of the fields in this <see cref="EditContext"/> have been modified; otherwise false.</returns>
    public bool IsModified()
    {
        // If necessary, we could consider caching the overall "is modified" state and only recomputing
        // when there's a call to NotifyFieldModified/NotifyFieldUnmodified
        foreach (var state in _fieldStates)
        {
            if (state.Value.IsModified)
            {
                return true;
            }
        }

    return false;
    }


/// <summary>
    /// Determines whether the specified fields in this <see cref="EditContext"/> has been modified.
    /// </summary>
    /// <returns>True if the field has been modified; otherwise false.</returns>
    public bool IsModified(in FieldIdentifier fieldIdentifier)
        => _fieldStates.TryGetValue(fieldIdentifier, out var state)
        ? state.IsModified
        : false;

    /// <summary>
    /// Determines whether the specified fields in this <see cref="EditContext"/> has been modified.
    /// </summary>
    /// <param name="accessor">Identifies the field whose current validation messages should be returned.</param>
    /// <returns>True if the field has been modified; otherwise false.</returns>
    public bool IsModified(Expression<Func<object>> accessor)
        => IsModified(FieldIdentifier.Create(accessor));
...