Angular 2在引导之前从服务器获取配置

标签 angular

我需要在应用程序启动之前从服务器获取配置。我能够在我的主要 ngModule 的提供者中使用它来做到这一点:

{
    provide: APP_INITIALIZER,
    useFactory: (links: Links) => () => links.init(),
    deps: [Links, Http],
    multi: true
}

链接服务:

init(): Promise<any> {
    var observable = this.http.get('someUrl').map(res => res.json());
    observable.subscribe(res => {
        this.config = res;
    });
    return observable.toPromise();
}

此代码在应用程序 Bootstrap 之前执行,但在我的应用程序请求 Links.config 之前,服务器的响应不存在。在 Promise 得到解决之前,如何强制应用程序不启动?我试过 promise.resolve(),但没有用。

我认为我使用提供程序的方式强制应用程序使用相同的链接实例,而且我认为数据已经存在于那里。请问我做错了什么?

最佳答案

在我的代码中,我做的完全一样,唯一的区别是我在映射之前将请求转换为 Promise。

public load(): Promise<void> {
    let headers = new Headers({ 'Content-Type': 'application/json' });
    let url = this.urls.settings;

    return this.http.get(url, { headers }).toPromise().
        then(configs => {
            this.startupSettings = configs.json();
        }).catch(err => {
            log(err);
        });
}

......................................

    {
        provide: APP_INITIALIZER,
        useFactory: (config: StartupConfigurationService) => () => config.load(),
        deps: [StartupConfigurationService],
        multi: true
    }

我不确定它是否有意义,但尝试可能会解决

关于Angular 2在引导之前从服务器获取配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40075781/

相关文章:

Angular 绑定(bind)在 VS Code 中不起作用

angular - 简单表单 POST 的 Material mat-radio-button name 属性

javascript - 如何延迟在 [(ngModel)] 中获取数据?

angular - 是否有健康 REST API 可以检查 Microsoft Azure 嵌入式 Power BI 服务 URL (https ://api. powerbi.com/) 的状态(正常或关闭)?

angular - 如何使用 *ngIf 指令更改图像?

Angular2 “expression has changed after it was checked” 异常

html - 如果主页上不存在 Chart.js 则不会在 Angular2 中显示

javascript - 无法从手机加载Ionic项目

angular - 没有 FormControl 实例附加到具有名称的表单控件元素

javascript - 在 *ngFor 中创建唯一的变量名