Пользовательский модальный сервис Angular работает неправильно, компонент не получает обновленийJavascript

Форум по Javascript
Ответить
Anonymous
 Пользовательский модальный сервис Angular работает неправильно, компонент не получает обновлений

Сообщение Anonymous »


Я создаю сервис в Angular для открытия компонентов внутри моего модального окна, но я кое-что заметил... по какой-то причине после того, как я внедрил содержимое моего компонента в модальное окно и вставил его в html моей страницы. , внутри моего компонента все работает не так, как должно.

Например, когда я обычно нахожусь на пути к компоненту, который хочу открыть через модальное окно, он работает правильно, я ввожу данные в форму, он проверяет, действительны они или недействительны, и отпускает кнопку сохранения. .. Но, когда этот самый компонент открывается моим модальным сервисом, он просто остается неизменным, даже после заполнения всех полей он все равно остается невалидным, как будто ничего не менял, оставаясь в неизменяемом состоянии. Мой код:
import { Injectable, Injector, ComponentFactoryResolver, Type, Inject } from "@angular/core"; импортировать {Наблюдаемый, Тема} из "rxjs"; импортировать { ModalComponent } из "../компоненты/модальный/модальный.компонент"; импортировать {ДОКУМЕНТ} из "@angular/common"; @Инъекционный({ предоставлено: 'корень' }) класс экспорта ModalService { частный модальныйNotifier!: Тема; конструктор (частный преобразователь: ComponentFactoryResolver, частный инжектор: Injector, @Inject (DOCUMENT) частный документ: Document) {} open(comment: Type, options: { title?: string, width?: string, height?: string }): Observable { // Крия о модальном компоненте. const modalComponentFactory = this.resolver.resolveComponentFactory(ModalComponent); const modalDynamicComponent = modalComponentFactory.create(this.injector); // Настройте модальные варианты как внутренние. modalDynamicComponent.instance.closeEvent.subscribe(() => this.close()); modalDynamicComponent.instance.title = options?.title; modalDynamicComponent.instance.width = options?.width; modalDynamicComponent.instance.height = options?.height; // Обнаружение как экземпляр, который может быть изменен. modalDynamicComponent.changeDetectorRef.detectChanges(); // Критика или конкретный компонент. const компонентFactory = this.resolver.resolveComponentFactory(компонент); const компонентRef = компонентFactory.create(this.injector); компонентRef.changeDetectorRef.detectChanges(); // Добавление или содержание кричащего компонента без модального режима. modalDynamicComponent.instance.contentViewRef.insert(comComponentRef.hostView); // Добавление на страницу или модальное окно. this.document.body.appendChild(modalDynamicComponent.location.nativeElement); this.modalNotifier = новый субъект(); верните this.modalNotifier.asObservable(); } закрывать() { this.modalNotifier.next(); this.modalNotifier.complete(); } }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»