小编Mar*_*.v7的帖子

Angular2 - 异步依赖注入

我使用Angular2 v2.2.3

我用forRoot()函数创建了通用模块,如下所示:

    ...
    public static forRoot(): ModuleWithProviders {
    return {
        ngModule: CommonsModule,
        providers: [
            SomeOtherDependency,
            {
                provide: ConfigService,
                useFactory: ConfigFactory,
                deps: [Http]
            }                
        ]
    };
Run Code Online (Sandbox Code Playgroud)

这是我的ConfigFactory:

export function ConfigFactory(http:Http):Promise<ConfigService> {    
    return http.get('confg/config.json').map(r => {
        return new ConfigService(r);
    }).toPromise();
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过返回Promise和Observable.

提供程序中定义的SomeOtherDependency需要ConfigService.问题是Angular没有注入由promise承诺的价值,而是承诺自己.

如何强制angular等待promise以适当的依赖关系解决,然后将其注入其他依赖项?

我尝试了不同的方法,并且总是注入价值是承诺或可观察的.就像iniector忽略了工厂返回的类型.我需要在整个应用程序启动之前加载一些json文件

asynchronous dependency-injection angular

13
推荐指数
1
解决办法
5346
查看次数

使用maven构建.war文件.缺少文件和目录

我尝试使用maven插件构建.war文件:

  <plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.6</version>
    <configuration>
      <warSourceDirectory>WebContent</warSourceDirectory>
      <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
  </plugin>
Run Code Online (Sandbox Code Playgroud)

我的项目结构如下:

/main/webapp/WEB-INF/
/main/webapp/WEB-INF/spring/...
/main/webapp/WEB-INF/web.xml
/main/webapp/public/...
/main/webapp/resources/...
/main/webapp/views/...
Run Code Online (Sandbox Code Playgroud)

构建之后,我的war文件只包含WEB-INF和META-INF.缺少webapp目录的所有其他内容(公共,资源和视图).此外,.war文件中的WEB-INF目录只包含/ classes和/ lib目录(/ WEB-INF/spring和WEB-INF/web.xml是missig).

如何告诉maven将所有webapp和WEB-INF目录内容打包到war文件中?

java spring war maven maven-war-plugin

5
推荐指数
1
解决办法
4542
查看次数