首页 > 解决方案 > 变量未定义,但为什么呢?

问题描述

由于某种原因,我似乎得到“未定义测试”。我在另一个服务文件中定义了一个与此完全相同的变量。只是想知道为什么它在这个特定的代码中不起作用?

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';

@Injectable()
export class OnlineTestService {
 // add setters and gettrers  according to your usage
    constructor(private http: HttpClient) {
        var test = "";
        this.getJSON().subscribe(data => {
            return data;
        });
        this.getANSWERS().subscribe(data => {
            return data;
        });

    };

    questionAnswers(input){
        test = input;
    };
    retrieveAnswers(){
        return test;
    };

    public getJSON(): Observable<any> {
        return this.http.get("assets/questions.json");
    };

    public getANSWERS(): Observable<any> {
        return this.http.get("assets/answers.json");
    };

}

编辑:

export class RegistrationService {
 // add setters and gettrers  according to your usage
    constructor(){
        var name = "";
    }
    addUser(input){
        name = input.name;
    }
    retrieveUser(){
        return name;
    }
}

标签: typescript

解决方案


您希望 'test' 成为私有对象,而不是构造函数中的 var。您拥有它的方式被设置为无法在其他任何地方读取的局部变量。


推荐阅读