订阅()returns未定义
Subscribe() returns undefined
我无法在 subscribe() 之外使用 subscribe() 的结果,console.log 总是 returns 未定义。我的假设是它与异步事物有关,但我不知道使它起作用的解决方法。我应该改用 promise 吗?
export class MyComponent implements OnInit {
textt: String;
constructor(private tstService: MyComponentService) { this.source = new LocalDataSource(this.data) }
ngOnInit(): void {
this.tstService.getTstWithObservable()
.map(result => result.map(i => i.user.data))
.subscribe(
res => { this.textt = res[0].title; }
);
}
data = [
{
title: this.textt,
sdate: '01/04/1990',
edate: '30/09/1990',
},
];
source: LocalDataSource;
}
你说得对,问题是 subscribe
是异步工作的。
data.title
未在创建时设置,因为 this.textt
未在创建组件时设置,它将在另一个(未知)时间设置。
更新您的 data
属性。您可以在订阅内创建它,或者您只需在其中设置 title
。
ngOnInit(): void {
this.tstService.getTstWithObservable()
.map(result => result.map(i => i.user.data))
.subscribe(
res => {
this.textt = res[0].title;
this.data.title = this.textt;
}
);
}
我无法在 subscribe() 之外使用 subscribe() 的结果,console.log 总是 returns 未定义。我的假设是它与异步事物有关,但我不知道使它起作用的解决方法。我应该改用 promise 吗?
export class MyComponent implements OnInit {
textt: String;
constructor(private tstService: MyComponentService) { this.source = new LocalDataSource(this.data) }
ngOnInit(): void {
this.tstService.getTstWithObservable()
.map(result => result.map(i => i.user.data))
.subscribe(
res => { this.textt = res[0].title; }
);
}
data = [
{
title: this.textt,
sdate: '01/04/1990',
edate: '30/09/1990',
},
];
source: LocalDataSource;
}
你说得对,问题是 subscribe
是异步工作的。
data.title
未在创建时设置,因为 this.textt
未在创建组件时设置,它将在另一个(未知)时间设置。
更新您的 data
属性。您可以在订阅内创建它,或者您只需在其中设置 title
。
ngOnInit(): void {
this.tstService.getTstWithObservable()
.map(result => result.map(i => i.user.data))
.subscribe(
res => {
this.textt = res[0].title;
this.data.title = this.textt;
}
);
}