Angular 2 มีคุณสมบัติที่ดีมากที่เรียกว่า Opaque Constants สร้างคลาส & กำหนดค่าคงที่ทั้งหมดโดยใช้ค่าคงที่ทึบแสง
import { OpaqueToken } from "@angular/core";
export let APP_CONFIG = new OpaqueToken("my.config");
export interface MyAppConfig {
apiEndpoint: string;
}
export const AppConfig: MyAppConfig = {
apiEndpoint: "http://localhost:8080/api/"
};
ฉีดเข้าไปในผู้ให้บริการใน app.module.ts
คุณจะสามารถใช้งานได้กับทุกองค์ประกอบ
แก้ไขสำหรับเชิงมุม 4:
สำหรับ Angular 4 แนวคิดใหม่คือการฉีดโทเค็นและโทเค็นทึบแสงถูกคัดค้านใน Angular 4
หัวฉีดโทเค็นเพิ่มฟังก์ชันการทำงานที่ด้านบนของโทเค็นแบบทึบช่วยให้สามารถแนบข้อมูลประเภทบนโทเค็นผ่านข้อมูลทั่วไปของ TypeScript รวมถึงโทเค็นการฉีดทำให้ไม่ต้องเพิ่ม @Inject
รหัสตัวอย่าง
เชิงมุม 2 ใช้โทเค็นทึบแสง
const API_URL = new OpaqueToken('apiUrl'); //no Type Check
providers: [
{
provide: DataService,
useFactory: (http, apiUrl) => {
// create data service
},
deps: [
Http,
new Inject(API_URL) //notice the new Inject
]
}
]
เชิงมุม 4 การใช้โทเค็นการฉีด
const API_URL = new InjectionToken<string>('apiUrl'); // generic defines return value of injector
providers: [
{
provide: DataService,
useFactory: (http, apiUrl) => {
// create data service
},
deps: [
Http,
API_URL // no `new Inject()` needed!
]
}
]
โทเค็นการฉีดได้รับการออกแบบอย่างมีเหตุผลที่ด้านบนของโทเค็นแบบทึบ & โทเค็นแบบทึบแสงถูกคัดค้านใน Angular 4
export
คำหลักก่อนหน้าclass
และpublic static
ก่อนหน้าreadonly
คำหลัก ดูที่นี่: stackoverflow.com/a/22993349