Контекст выпуска
У меня есть блазор для обертывания bootstrap модальный с некоторым базовым c связыванием.
У меня есть два компонента, которые обертывают EditForm
компоненты, которые я открываю через этот модальный компонент: ConversionForm.razor и ConversionInputForm.razor .
Затем я использую эти два компонента формы / модала на странице с некоторыми простыми кнопками (не используя bootstrap модальное связывание данных).
Issue
* Кнопка 1019 *
Add Conversion Input
заставляет модал появляться и работать должным образом. Кнопка
Add Conversion
вызывает модальное появление, затем исчезает и оставляет модальный фон.
Устранение неполадок
Я добавил Console.WriteLine
к OnAfterRenderAsyn c модального компонента, чтобы увидеть, есть ли разница, и единственное, что я заметил, это то, что conversion-modal.OnAfterRenderAsync(True)
отображается после modal.ShowAsync
метода, который исчезает.
Мне интересно, есть ли что-то в поведении привязки, которое вызывает такое поведение, так как я считаю, что firstRender = true должен происходить только один раз при начальной загрузке страница компонента.
Чтобы воспроизвести это поведение, создайте новое приложение Blazorserver dotnet new blazorserver
и добавьте / измените файлы в this gist .
Вывод консоли для того, что работает:
conversion-modal.OnAfterRenderAsync(True) [1]
conversion-input-modal.OnAfterRenderAsync(True) [1]
conversion-input-modal.ShowAsync()
conversion-input-modal.OnAfterRenderAsync(False) [2]
conversion-modal.OnAfterRenderAsync(False) [2]
conversion-input-modal.OnAfterRenderAsync(False) [3]
Вывод на консоль для того, что сломано:
conversion-modal.OnAfterRenderAsync(True) [1]
conversion-input-modal.OnAfterRenderAsync(True) [1]
conversion-modal.ShowAsync()
conversion-modal.OnAfterRenderAsync(True) [1] <<-------------
conversion-modal.OnAfterRenderAsync(False) [2]
conversion-input-modal.OnAfterRenderAsync(False) [2]
4-я строка conversion-modal.OnAfterRenderAsync(True) [1]
- это то, что я подозреваю, как будто компонент был повторно инициализирован. Не уверен, почему или если это даже часть проблемы.
Помощь приветствуется.
Обновление
Я добавил консольный вывод OnInitializedAsyn c в модал и подтвердил, что модал по какой-то причине снова восстанавливает структуру фреймворком теперь уверен, что это вызывает проблему, но есть подозрение, пока я не найду другой способ устранения неполадок.
Добавить преобразование Ввод (РАБОТА) Выход
conversion-modal.OnInitializedAsync() [1]
conversion-input-modal.OnInitializedAsync() [1]
conversion-modal.OnInitializedAsync() [1]
conversion-input-modal.OnInitializedAsync() [1]
conversion-modal.OnAfterRenderAsync(True) [1]
conversion-input-modal.OnAfterRenderAsync(True) [1]
conversion-input-modal.ShowAsync()
conversion-input-modal.OnAfterRenderAsync(False) [2]
conversion-modal.OnAfterRenderAsync(False) [2]
conversion-input-modal.OnAfterRenderAsync(False) [3]
Добавить Выход преобразования (BROKEN)
conversion-modal.OnInitializedAsync() [1]
conversion-input-modal.OnInitializedAsync() [1]
conversion-modal.OnInitializedAsync() [1]
conversion-input-modal.OnInitializedAsync() [1]
conversion-modal.OnAfterRenderAsync(True) [1]
conversion-input-modal.OnAfterRenderAsync(True) [1]
conversion-modal.ShowAsync()
conversion-modal.OnInitializedAsync() [1] <<-------------
conversion-modal.OnAfterRenderAsync(True) [1] <<---------
conversion-modal.OnAfterRenderAsync(False) [2]
conversion-input-modal.OnAfterRenderAsync(False) [2]