我想添加一个App Settings
部分到我的应用程序,它将包含一些常量和预定义的值。App.settings - 角度的方式?
我已阅读this answer其中使用OpaqueToken
但它已在Angular中弃用。这article解释的差异,但它没有提供一个完整的例子,我的尝试是不成功的。
这里是我试过(我不知道这是否是正确的方式):
//ServiceAppSettings.ts
import {InjectionToken, OpaqueToken} from "@angular/core";
const CONFIG = {
apiUrl: 'http://my.api.com',
theme: 'suicid-squad',
title: 'My awesome app'
};
const FEATURE_ENABLED = true;
const API_URL = new InjectionToken<string>('apiUrl');
而这正是我想用这些consts组件:
//MainPage.ts
import {...} from '@angular/core'
import {ServiceTest} from "./ServiceTest"
@Component({
selector: 'my-app',
template: `
<span>Hi</span>
` , providers: [
{
provide: ServiceTest,
useFactory: (apiUrl) => {
// create data service
},
deps: [
new Inject(API_URL)
]
}
]
})
export class MainPage {
}
但它不起作用,我得到错误。
问:
我怎么能消费 “app.settings” 的价值观的角度呢?
NB当然,我可以创造注射服务,并把它放在NgModule的供应商,但正如我说我想InjectionToken
,角度的方式来做到这一点。
你可以检查我的答案[这里](http://stackoverflow.com/questions/34986922/ define-global-constants-in-angular-2/43439599#43439599)基于当前官方文档 – JavierFuentes
@ javier no。如果两个供应商提供相同的名称,则您的链接有问题,因此您现在有问题。 Entring opaquetoken –
你知道[OpaqueToken已被弃用]。 (https://angular.io/api/core/OpaqueToken)[本文](https://blog.thoughtram.io/angular/2016/05/23/opaque-tokens-in-angular-2.html )谈到如何防止角提供商名称冲突 – JavierFuentes