簡體   English   中英

如何在TypeScript中訪問另一個模塊內的模塊信息?

[英]How to access module info inside another module in TypeScript?

我正在使用AngularJS2和TypeScript開發NativeScript應用程序。 我創建了一個文件config.ts來存儲我的API URL。

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;
    }
}

不知道這是正確的方法。 但是,它解決了問題。 如果有人知道更好的方法,這樣做會非常有用。

我要啟動的是Config模塊,而不是其中的Config類。

您可以嘗試將“ default”關鍵字添加到“ export class Config”行,或嘗試使用“ new Config.Config()”啟動配置實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM