声明TypeScript类

时间:2018-07-10 13:22:22

标签: angular function typescript class declaration

我有一个手写的数组来填充班级中的表格,现在我正在获取该数组的  内容来自ngOnInit上的JSON,但未按我的要求进行结构化。

所以我试图编写一个函数来用ngOnInit上的这个新函数填充表数组。

问题是,当我在TS类的函数外部编写代码时,出现此错误“函数实现丢失或在声明后不立即执行”。

为什么会这样,该如何解决?

TS

export class MyComponent implements OnInit {
    users: Object;

    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.users = res; }
       );
    }

    console.log(this.users); // Here, just an example. Throws 'Function implementation is missing or not immediately following the declaration'

    data = [
        {
          title: 'Monthly',
          sdate: '01/04/1990',
          edate: '30/09/1990',
        },
      ];

    source: LocalDataSource;
}

1 个答案:

答案 0 :(得分:3)

这里的问题是,您在“可执行区域”(例如console.log(this.users);内部的“区域”)之外有一些“代码执行”(ngOnInit)。

如果需要执行console.log(this.users);才能在devtools中查看数据,则应将console.log内的ngOnInit部分移到类{{ 1}}或MyComponent内。

我建议您这样做:

constructor

问题是您要执行的代码必须在Angular执行的某些方法中。

参见this demo并举例说明。相关代码如下:

ngOnInit(): void {
    this.tstService.getTstWithObservable()
    .map(result => result.map(i => i.user.data))
    .subscribe(
       res => {
                this.users = res;
                console.log(this.users); // <-- moved here!
       }
   );
}