Saya benar-benar kesulitan membuat variabel global di aplikasi Angular 2 saya.
Saya sudah mencari di Google dan membaca banyak posting di StackOverflow tentang ini selama 3 jam terakhir, namun sepertinya saya tidak bisa membuatnya berfungsi. Saya sangat berharap Anda dapat membantu saya dan saya minta maaf karena telah menanyakan pertanyaan ini.
Jadi saya memiliki file saya bernama globals.ts , yang terlihat seperti ini:
import { Injectable } from "@angular/core";
@Injectable()
export class Globals {
var role = 'test';
}
Dan saya ingin menggunakan peran variabel dalam tampilan HTML dari komponen saya seperti ini:
{{ role }}
Saya sudah menambahkan file globals.ts ke app.module.ts saya dengan cara berikut:
providers: [
Globals
],
Tidak peduli apa yang saya lakukan pada file ini, itu tidak berhasil. Yang tidak ingin saya lakukan adalah harus mengimpor file globals.ts di setiap komponen secara manual, itulah sebabnya saya ingin menggunakan fitur penyedia.
Saya sangat berharap Anda dapat membantu saya dan minta maaf lagi.
Salam Hormat,
AE
export class Globals { var role = 'test'; }
<- apa itu?localStorage
?Jawaban:
Anda dapat mengakses
Globals
entitas dari titik mana pun di Aplikasi Anda melalui injeksi ketergantungan Angular . Jika Anda ingin menghasilkanGlobals.role
nilai di beberapa template komponen, Anda harus memasukkanGlobals
melalui konstruktor komponen seperti layanan apa pun:Saya menyediakan
Globals
diHelloComponent
, tetapi sebaliknya dapat disediakan di beberapaHelloComponent's
komponen induk atau bahkan diAppModule
. Tidak masalah sampai AndaGlobals
hanya memiliki data statis yang tidak dapat diubah (katakanlah, hanya konstanta). Tetapi jika itu tidak benar dan misalnya berbagai komponen / layanan mungkin ingin mengubah data itu, makaGlobals
harus menjadi tunggal . Dalam hal ini, itu harus disediakan di tingkat paling atas dari hierarki tempat itu akan digunakan. Katakanlah ini adalahAppModule
:Juga, tidak mungkin menggunakan var seperti yang Anda lakukan, seharusnya
Memperbarui
Akhirnya, saya membuat demo sederhana di stackblitz , di mana single
Globals
dibagikan antara 3 komponen dan salah satunya dapat mengubah nilainyaGlobals.role
.sumber
Saya menggunakan lingkungan untuk itu. Ini bekerja secara otomatis dan Anda tidak perlu membuat layanan injeksi baru dan yang paling berguna bagi saya, tidak perlu mengimpor melalui konstruktor.
1) Buat variabel lingkungan di environment.ts Anda
2) Impor environment.ts dalam file * .ts dan buat variabel publik (yaitu "env") agar dapat digunakan dalam template html
3) Gunakan di template ...
di * .ts ...
(atau hanya environment.isContentLoading jika Anda tidak membutuhkannya untuk template)
Anda dapat membuat kumpulan global Anda sendiri dalam environment.ts seperti ini:
dan impor langsung variabel-variabel ini (y)
sumber
environments/environment.ts
danenvironments/environment.prod.ts
yang diganti otomatis.Tidak sangat direkomendasikan tetapi tidak ada jawaban lain yang benar-benar variabel global. Untuk variabel yang benar-benar global, Anda dapat melakukan ini.
Index.html
Komponen atau apa pun di Angular
..di dekat kanan atas setelah impor:
...kemudian:
sumber
Anda dapat menggunakan objek Window dan mengaksesnya di mana saja. contoh window.defaultTitle = "judul saya"; lalu Anda dapat mengakses window.defaultTitle tanpa mengimpor apapun.
sumber