Perkhidmatan Menyuntik dalam Sudut 2 (Beta)
Dalam Sudut 2, menyuntik perkhidmatan ke dalam komponen adalah mudah, tetapi bagaimana kita boleh menggunakan suntikan pergantungan (DI) untuk memindahkan perkhidmatan melangkaui komponen?
Perkhidmatan Menyuntik Di Luar Komponen
Untuk mencapai matlamat ini, kami mencatatkan perkhidmatan yang diingini dengan penghias @Injectable. Penghias ini menandakan bahawa parameter dalam pembina kelas beranotasi harus menerima suntikan.
Memahami Mekanisme Suntikan
Mekanisme DI dalam Angular 2 beroperasi pada pokok penyuntik dipautkan dalam struktur hierarki. Penyuntik ini dipetakan pada pepohon komponen, tetapi tiada penyuntik khusus untuk perkhidmatan.
Apabila perkhidmatan dianotasi dengan @Injectable, Angular cuba untuk mencipta atau mengambil contoh untuk jenis perkhidmatan tersebut dalam penyuntik untuk semasa rantai pelaksanaan.
Contoh: Suntikan Perkhidmatan Rantai
Pertimbangkan contoh aplikasi berikut:
Setiap perkhidmatan dan komponen dianotasi dengan @Injectable.
Hierarki Penyuntik dan Suntikan Perkhidmatan
Dalam aplikasi ini, kami mempunyai tiga penyuntik:
Apabila menyuntik Service1 ke dalam ChildComponent, Angular mencari pembekal Service1 pertama dalam penyuntik ChildComponent, kemudian dalam penyuntik AppComponent, dan akhirnya dalam penyuntik aplikasi.
Begitu juga, apabila menyuntik Perkhidmatan2 ke dalam Perkhidmatan1, proses carian yang sama berlaku.
Skop Penyedia dan Hierarki Penyuntik
Ini proses carian menentukan tempat untuk membuat instantiate dan berkongsi contoh perkhidmatan. Pembekal boleh ditentukan pada tahap yang berbeza:
Kesimpulan
Dengan memanfaatkan @Penghias boleh suntikan dan memahami mekanisme DI dalam Angular 2, kami boleh menyuntik perkhidmatan antara komponen dan perkhidmatan dengan berkesan, membolehkan kami mengatur dan berkongsi kebergantungan mengikut keperluan.
Atas ialah kandungan terperinci Bagaimanakah Suntikan Ketergantungan Berfungsi Melangkaui Komponen Sudut 2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!