Bagaimana saya dapat mendeklarasikan variabel global dalam Sudut 2 / Ketangkasan?
Saya ingin beberapa variabel yang dapat diakses di mana-mana dalam Sudut 2
dalam Naskah
itu. Bagaimana saya harus pergi tentang melakukan hal ini?
158
10
Berikut ini adalah solusi sederhana w/o
Service
atauPengamat
:Menempatkan variabel global dalam file ekspor mereka.
Untuk menggunakan globals di file lain menggunakan
impor
pernyataan:impor * sebagai myGlobals dari './globals';
Contoh:
Aku suka solusi dari @supercobra juga. Saya hanya ingin meningkatkan sedikit. Jika anda mengekspor sebuah obyek yang berisi semua konstanta, anda hanya bisa menggunakan es6 impor modul tanpa menggunakan membutuhkan.
Saya juga menggunakan Objek.freeze untuk membuat properti menjadi benar konstanta. Jika anda tertarik pada topik ini, anda bisa baca ini posting.
Lihat modul menggunakan impor.
Layanan adalah pendekatan yang terbaik
Tapi anda harus sangat berhati-hati ketika mendaftar untuk dapat berbagi satu contoh untuk seluruh aplikasi. Anda perlu menentukan ketika mendaftarkan aplikasi anda:
tapi tidak menentukan lagi dalam
penyedia
atribut dari komponen anda:Jika sebuah instance baru dari layanan anda akan dibuat untuk komponen dan sub komponen.
Anda bisa melihat-lihat di pertanyaan ini mengenai bagaimana dependency injection dan hirarkis injektor bekerja di Angular2:
Anda dapat melihat bahwa anda juga dapat menentukan
Diamati
properties dalam pelayanan untuk memberitahukan bagian-bagian dari aplikasi anda ketika anda global sifat perubahan:Melihat pertanyaan ini untuk lebih jelasnya:
Lihat misalnya https://stackoverflow.com/questions/35993778/angular-2-implementation-of-shared-services
atau memberikan nilai-nilai individu
Membuat Globals di kelas aplikasi/globals.ts:
Dalam komponen anda:
Catatan: Anda dapat menambahkan Globals penyedia layanan langsung ke modul komponen, dan anda tidak akan perlu menambahkan sebagai penyedia untuk setiap komponen dalam modul tersebut.
IMHO untuk Angular2 (v2.2.3) cara terbaik adalah untuk menambahkan layanan yang berisi variabel global dan menyuntikkannya ke dalam komponen tanpa
penyedia
tag di dalam@Komponen
penjelasan. Dengan cara ini anda dapat berbagi informasi antara komponen.Contoh layanan yang memiliki variabel global:
Contoh komponen yang update nilai variabel global:
Contoh komponen yang membaca nilai variabel global:
Saya don't tahu cara terbaik, tapi cara termudah jika anda ingin mendefinisikan variabel global dalam komponen adalah dengan menggunakan
jendela
variabel untuk menulis seperti ini:jendela.GlobalVariable = "apa yang pernah!"
anda don't perlu untuk lulus untuk bootstrap atau mengimpor tempat-tempat lain, dan itu mudah di akses secara global untuk semua JS (tidak hanya sudut 2 komponen).
Yang's cara yang saya gunakan:
global.ts
untuk menggunakannya hanya impor seperti itu:
Saya pikir cara terbaik adalah untuk berbagi sebuah objek dengan variabel global di seluruh aplikasi anda dengan mengekspor dan mengimpor mana yang anda inginkan.
Pertama membuat yang baru .ts file misalnya globals.ts dan menyatakan suatu objek. Aku memberikannya sebuah Obyek jenis tapi anda juga bisa menggunakan setiap jenis atau {}
Setelah itu impor
Dan menggunakannya
Saya suka jawaban dari @supercobra, tapi aku akan menggunakan kata kunci const seperti di ES6 sudah tersedia: