Cara membuat modal popup yang kompatibel dengan Angular 4
Saya ingin dapat membuat jendela popup yang akan memuat komponen Angular 4 tertentu milik saya ketika tombol radio dipilih.
Tampaknya metode yang tercantum dalam jawaban untuk [pertanyaan] ini (https://stackoverflow.com/questions/35400811/how-to-use-codes-to-open-a-modal-in-angular-2) hanya kompatibel dengan Angular 2.
Saya tidak yakin harus mulai dari mana dan akan sangat menghargai bantuan!
19
2
Jawaban yang diterima menambahkan ketergantungan yang besar untuk menepuk lalat. Dialog modal (dan modeless) sebagian besar merupakan hasil dari satu atau dua kelas CSS. Coba contoh "rename..." ini:
Induk HTML yang menggunakan `` anak:
Kelas induk. Dekorator
@Component
dihilangkan untuk mempersingkat. (Propertinama
adalah milik kelas induk dan akan tetap ada meskipun kita tidak memiliki form untuk mengubahnya).Komponen anak yang akan dimodal. Dekorator
@Component
dan impor lagi dihilangkan.Anak HTML sebelum menjadi modal-izing.
modal
dan ditujukan untuk elemen<div>
.Tetapi kelas CSS
modal
tidak akan mencegah interaksi dengan halaman di bawahnya. (Jadi secara teknis menciptakan dialog tanpa model.) Jadi kita menempatkanoverlay
di bawah modal untuk menyerap dan mengabaikan aktivitas mouse.overlay
juga ditujukan untuk elemen<div>
.modal
danoverlay
di dalam child HTML.Dan itu saja. Pada dasarnya 2 kelas CSS dan Anda dapat membuat komponen apa pun menjadi modal. Bahkan Anda dapat menampilkan komponen secara in-line atau sebagai modal pada saat run-time hanya dengan mengubah keberadaan kelas CSS dengan
ngClass
atau[class.modal]="showAsModalBoolean"
.Anda dapat mengubah ini sehingga anak mengontrol logika show/hide. Pindahkan fungsi *ngIf, showIt, dan show() ke dalam child. Di dalam induk tambahkan
@ViewChild(MyModalComponent) renameModal: MyModalComponent;
dan kemudian induk dapat secara imperatif memanggilthis.renameModal.show(this.name);
dan re-wire inisialisasi dan div yang mengandung sesuai kebutuhan.Anak-modal dapat mengembalikan info ke fungsi induk seperti yang ditunjukkan di atas, atau metode
show()
anak dapat menerima callback atau mengembalikan Promise, sesuai selera.Dua hal yang perlu diketahui:
this.renameModal.show(..);
tidak akan berfungsi jika ada ngIf pada `` karena tidak akan ada fungsi untuk mengekspos fungsi untuk memulai. ngIf akan menghapus seluruh komponen, fungsi show() dan semuanya, jadi gunakan[hidden]
sebagai gantinya jika Anda membutuhkan ini untuk beberapa alasan.Modals-on-modals akan memiliki masalah z-index karena mereka semua berbagi z-index yang sama. Hal ini dapat diatasi dengan
[style.z-index]="calculatedValue"
atau sejenisnya.Periksa Dialog Material Sudut, berikut ini adalah Plunker