在subscribe()方法中未定义Angular 2局部变量

时间:2017-02-13 20:09:06

标签: angular

我有一个非常简单的测试组件,如下所示:

@Component({
    selector: "test-component",
    template: "<div>Test</div>",
})
export class TestComponent implements OnInit {
    private test : number = 0;
    private service : ClientsService;

    constructor(s : ClientsService) {
        this.service = s;
    }

    public ngOnInit() {
        this.service.loadAllClients().subscribe(d => {
            this.test = 1;
        });
        let comp = this;
    }
}

客户服务返回一个Observable,但我的问题是关于&#39;测试&#39;变量。组件加载后,第一个和第一个断点被命中,&#39; test&#39;是0 enter image description here  但是,当&#39; subscribe()&#39;内的断点时被击中,测试&#39;变得不确定。在lambda内完成的任何赋值都不会生效。 enter image description here

我在这里缺少什么来在&#39; subscribe()&#39;中进行适当的分配?

1 个答案:

答案 0 :(得分:1)

一种可能性(我不确定)是this是服务范围,因为您在组件中声明了它的实例。我自己也没做过,所以我不确定。您可以尝试这样做以查看它是否有效:

@Component({
    selector: "test-component",
    template: "<div>Test</div>",
})
export class TestComponent implements OnInit {
    private test : number = 0;

    constructor(private _service : ClientsService) {}

    public ngOnInit() {
        this._service.loadAllClients().subscribe(d => {
            this.test = 1;
        });
        let comp = this;
    }
}

除此之外,对我来说没有任何错误。我已多次使用上述方法,并且正确保留了this组件范围。