如何在TypeScript中访问另一个模块内的模块信息?

时间:2016-06-04 08:13:18

标签: javascript typescript angular nativescript

我使用AngularJS2&amp ;;正在使用NativeScript应用程序。打字稿。我已经创建了一个文件config.ts来存储我的API网址。

config.ts的代码

export class Config {
  apiUrl = "https://incandescent-fire-8397.firebaseio.com/";
}

然后,从另一个名为user.service.ts的文件中,我试图访问apiUrl值。但是,不知道该怎么做。试过几个排列&组合,但到现在为止没有运气。

user.service.ts的代码

import {Injectable} from "@angular/core";
import {User} from "./user";
import Config = require("../config");

@Injectable()
export class UserService {
    config: any;

    constructor() {
        this.config = new Config();
    }

    register(user: User) {
        alert("API url going to use is : "+this.config.apiUrl);
    }
}

需要一些指导。

此致

------问题已修复-------

更新了user.service.ts文件

import {Injectable} from "@angular/core";
import {User} from "./user";
import {ConfigService} from "../config";

@Injectable()
export class UserService {

  apiUrl = "https://incandescent-fire-8397.firebaseio.com/";

  register(user: User,config:ConfigService) {
    //alert("About to register: " + user.email);
    alert("API url going to use is : "+config.apiUrl);
  }
}

然后,我访问app.componets.ts方法的模块(register)更新如下 -

import {Component} from "@angular/core";
import {User} from "./shared/user/user";
import {UserService} from "./shared/user/user.service";
import {ConfigService} from "./shared/config";
import {HTTP_PROVIDERS} from "@angular/http";
import firebase = require("nativescript-plugin-firebase");

@Component({
  selector: "my-app",
  providers: [UserService, HTTP_PROVIDERS,ConfigService],
  templateUrl: "pages/login/login.html",
  styleUrls: ["pages/login/login-common.css", "pages/login/login.css"]
})

export class AppComponent {
    user: User;
    isLoggingIn = true;
    config:any;

    constructor(private _userService: UserService, private _configSerice:ConfigService) {
        this.user = new User();
        this.config = new ConfigService();
    }

    submit() {
        if (this.isLoggingIn) {
            this.login();
        } else {
            this.signUp();
        }
    }

    login() {
        // TODO: Define
        console.log('Clicked on Login button');

        firebase.init(<any>{
            persist: true // Allow disk persistence. Default false.
        }).then(
            function (instance) {
                console.log("firebase.init done");
            },
            function (error) {
                console.log("firebase.init error: " + error);
            }
        );
    }

    signUp() {
        this._userService.register(this.user,this.config);
    }

    toggleDisplay() {
        this.isLoggingIn = !this.isLoggingIn;
    }
}

不知道这是一种正确的做法。但是,它解决了这个问题。如果有人知道有更好的方法可以做到这一点,那么会很多。

1 个答案:

答案 0 :(得分:0)

我认为你正在启动Config模块而不是其中的Config类。

您可以尝试将“default”关键字添加到“export class Config”行,或尝试使用“new Config.Config()”启动配置实例。