我有一个非常简单的测试组件,如下所示:
@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 但是,当&#39; subscribe()&#39;内的断点时被击中,测试&#39;变得不确定。在lambda内完成的任何赋值都不会生效。
我在这里缺少什么来在&#39; subscribe()&#39;中进行适当的分配?
答案 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
组件范围。