相关疑难解决方法(0)

Angularjs2 - 应用程序启动前的预加载服务器配置

我正在使用Angular2 RC5.我希望能够在我的应用程序启动之前加载我的服务器IP地址和一些其他配置参数.我怎样才能在最新的RC5中做到这一点?

我看过其他文章,但它们没有帮助:

  1. 如何在angular2中预加载配置文件:这里提供的答案特定于webpack.我正在使用systemjs.
  2. https://medium.com/@hasan.hameed/reading-configuration-files-in-angular-2-9d18b7a6aa4#.m8lontnas:这是针对Angular2的旧版本.使用的某些类已弃用.

任何帮助将不胜感激.

编辑

我尝试在app.module.ts中使用APP_INITIALIZER,如下所示:

    import { NgModule, provide, APP_INITIALIZER }       from "@angular/core";
    import { ConfigService } from "./shared/services/config.service";
    @NgModule({
        declarations: [AppComponent],
        imports: [BrowserModule,
            routes,
            FormsModule,
            HttpModule],
        providers: [AuthService,
            Title,
            appRoutingProviders,
            ConfigService],
        bootstrap: [AppComponent
            , provide(APP_INITIALIZER,
                {
                    useFactory: (config: ConfigService) => () => config.load(),
                    deps: [ConfigService], multi: true
                })]
    })
    export class AppModule { }
Run Code Online (Sandbox Code Playgroud)

这是我的config.service.ts文件:

    import { Config } from "../model/config";

    export class ConfigService {
        constructor() {
        }

        load(): Promise<Config> {
            let config: Config …
Run Code Online (Sandbox Code Playgroud)

angular

14
推荐指数
1
解决办法
1万
查看次数

Angular2 APP_INITIALIZER不一致

我正在使用APP_INITIALIZER,就像在这个答案中推荐的那样,我的服务返回一个承诺,但它并不总是等待它解决,我可以看到我的组件console.logging未定义,然后服务记录下载的对象.

我需要应用程序在加载此数据之前不做任何事情.

app.module.ts

import { NgModule, APP_INITIALIZER } from '@angular/core';
import { Http, HttpModule, JsonpModule } from '@angular/http';
import { UserService } from '../services/user.service';

<...>
@NgModule({
  imports: [
    BrowserModule,
    HttpModule,
    FormsModule,
    JsonpModule,
    routing
  ],
  declarations: [
    AppComponent,
    <...>
  ],
  providers: [
    <...>
    UserService,
    {provide: APP_INITIALIZER,
      useFactory: (userServ: UserService) => () => userServ.getUser(),
      deps: [UserService, Http],
      multi: true
    }
  ],
  bootstrap: [AppComponent]
Run Code Online (Sandbox Code Playgroud)

user.service.ts

@Injectable()
export class UserService {

    public user: User;
    constructor(private http: Http) { }

    getUser(): Promise<User> { …
Run Code Online (Sandbox Code Playgroud)

promise observable angular

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

Angular 2在渲染应用程序之前加载数据

在我的主要组件的ngOnInit中,我确实得到了一些全局设置:

ngOnInit() {
   this._service1.initGlobalData()
   this._service2.initGlobalData2()
}
Run Code Online (Sandbox Code Playgroud)

这两个调用初始化_service1和_service2,然后在我的应用程序的几个不同的地方使用.我想确保在开始渲染我的应用程序之前完成这两个调用.

在Angular 2中有没有具体的方法呢?

我想到的唯一解决方案是根据这两个init调用返回的promise设置一个微调器.

typescript angular

6
推荐指数
1
解决办法
5310
查看次数

如何为在app.module中导入的模块提供运行时配置数据?

我正在使用在AppModule中导入的MsAdalAngular6Module,我需要能够在运行时从外部json文件提供配置值:

@NgModule({
declarations: [AppComponent, HeaderComponent, SidebarComponent],
imports: [
CommonModule,
BrowserModule,
HttpClientModule,
MsAdalAngular6Module.forRoot( {tenant: config.tenantId,
  clientId: config.clientId,
  redirectUri: window.location.origin,
  endpoints: {
    string: ''
  },
  navigateToLoginRequestUrl: false,
  cacheLocation: 'localStorage'}),
AppRoutingModule
Run Code Online (Sandbox Code Playgroud)

我正在Docker中使用多阶段构建和nginx运行它。理想情况下,我希望此模块配置的默认值来自环境文件,但应在运行时由外部json文件中的值取代。

我已经看到了几种解决方法,包括Angular 2:befor bootstrap之前的外部配置-将值传递给AppModule,但是在导入和配置MsAdalAngular6模块之前,我似乎永远无法将值提供给app.module。

angular

5
推荐指数
0
解决办法
248
查看次数

标签 统计

angular ×4

observable ×1

promise ×1

typescript ×1