如何以异步方式初始化角度模块

时间:2018-09-19 05:46:23

标签: javascript angular async-await

我正在尝试以异步方式初始化角度模块,但不知道该怎么做:

@NgModule({
    declarations: [AppComponent, HomeComponent],
    imports: [          
        OAuthModule.forRoot({
            resourceServer: {
                allowedUrls: [appConfig.apiBaseURL()],
                sendAccessToken: true
            }
        }),
        ...
    ],
    bootstrap: [AppComponent]
})

这是我的appConfig:

export let appConfig = {
    load: () => {
        axios.get('/appsettings.json')
            .then(function (response) {
                appConfig._apiBaseURL = response.data.apiBaseURL;
            })
            .catch(function (error) {
                console.log(error);
            });
    },
    _apiBaseURL: undefined, 
    apiBaseURL: () => {
        if (appConfig._apiBaseURL) {
            return appConfig._apiBaseURL;
        }
        appConfig.load();
        return appConfig._apiBaseURL;
    }
};

您可以看到我的apiBaseURL属性是通过Http调用异步加载的。然后在模块导入之一中使用它。因为它是在应用启动时异步完成的,_apiBaseURL尚未定义...

使用前如何加载?我试图将所有内容切换为异步/等待并像

一样使用它
 await appConfig.apiBaseURL()

但是@NgModule不是异步

0 个答案:

没有答案