Subscribe()返回未定义

时间:2018-07-10 16:05:03

标签: angular typescript asynchronous observable subscribe

我无法使用subscribe()之外的subscribe()的结果,console.log始终返回未定义。我的假设是它与异步有关,但是我不知道一种解决方法可以使这项工作正常进行。我应该改用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;
}

1 个答案:

答案 0 :(得分:2)

是的,问题是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;
       }
   );
}