2016-11-13 81 views
1

我在ASP.NET核心应用程序内使用角2,但这不是重要的这个问题。我当前的一部分任务是从服务器获取配置值到角度应用程序中。角2注射AppSettings类

我流过到我写一个设置成我的布局,像这样的点设置:

<script> 
    var BASE_WEB_API_URL = '@appSettings.BaseUrls.Api'; 
</script> 

,这是工作,这是我通过查看标记验证。现在,我想要的是制作一个appsettings类,我可以通过DI注入我的服务和需要它的组件。这是我到目前为止:

import { Injectable } from '@angular/core'; 

@Injectable() 
export class AppSettings { 
    public BASE_WEB_API_URL: string = window['BASE_WEB_API_URL']; 
} 

非常简单直接,它应该允许我注入我的服务器变量。但是,当我尝试使用它时出现错误。

Error: Uncaught (in promise): Error: No provider for AppSettings!

所以,我认为我的问题是,它没有列在我的应用程序模块的进口。所以我说这只是为了得到这个错误:

Error: Unexpected value 'AppSettings' imported by the module 'AppModule'

所以,谷歌上搜索这个错误导致我一个帖子称这可能需要在引导部分,所以我想,明年只拿到一个新的错误消息。

Error: No Directive annotation found on AppSettings

我对Angular 2非常绿色,所以这些错误都让我失望。有什么想法我做错了什么?

谢谢

+2

不要把它放到模块的'imports'元数据中,把它放到'providers'中。 – pe8ter

+0

优秀的建议。但是,现在我有一个“窗口未定义”错误发生在我的appsettings.ts – Josh

+0

编译错误或运行时错误? – pe8ter

回答

1

认沽注射到你的模块的providers元数据,而不是imports