如何访问同一对象中的对象值

时间:2019-03-19 09:24:31

标签: angular typescript

我要创建环境对象,如下所示:

export const environment = 
    {
        production: false,
        hmr       : false,
        api: {
            auth: {
                protocol: 'http',
                host: 'localhost',
                port: '8083',
                api_path: 'api',
                version: {
                    path: 'v',
                    major: 1,
                    minor: 0,
                    patch: 0,
                },
                url: this.api.auth.protocol + '://' + this.api.auth.host + ':' + this.api.auth.port,
                controllers: {
                    auth: {
                        service_name: 'auth',
                        base_url: this.api.auth.url + '/' + this.api.auth.controllers.auth.service_name + '/'
                            + this.api.auth.api_path + '/' + this.api.auth.version.path + '/'
                            + this.api.auth.version.major + '.' + this.api.auth.version.minor + '.' + this.api.auth.version.patch + '/',
                        refresh_token_url: this.api.auth.controllers.auth.base_url + '/refresh_token',
                        login_url: this.api.auth.controllers.auth.base_url + '/login',
                        logout_url: this.api.auth.controllers.auth.base_url + '/logout'
                    }
                }
            }
        }
    };

我想访问同一对象中先前分配的值。就像我想以“ this.api.auth.protocol”的方式访问“ api.auth.url”中的“ api.auth.protocol”一样,以便可以从api.auth.host和api.auth中制作http://localhost:8083 。协议。但是我无法访问“ api.auth.url”中的“ api.auth.protocol”。编译后错误显示为“ Uncaught TypeError:无法读取未定义的属性'api'”。如何从同一对象访问先前的对象值?

我是这个领域的新手。抱歉,我问的是愚蠢的问题。

1 个答案:

答案 0 :(得分:3)

不,您不能在初始化程序中执行此操作。 拉出protocol到外部变量。

export const protocol = "http";

,然后在初始化程序的两个或多个位置使用变量/ const。