Angular订阅方法可以使用箭头功能,但不能使用普通功能,为什么?

时间:2019-06-25 15:27:29

标签: angular

我下面的代码不起作用:

app.component.ts:

export class AppComponent {
  posts;
  constructor(private _service: GetPostsService) {
    _service.getPosts().subscribe(function(response) {
      this.posts = response;
      console.log(this.posts);
    });
    console.log(this.posts);
  }
}

get-posts.service.ts:

export class GetPostsService {
  constructor(private _http: HttpClient) {}

  getPosts() {
    return this._http.get(
      "https://jsonplaceholder.typicode.com/posts"
    );
  }
}

app.component.html:

<ul>
  <li *ngFor="let post of posts">
    {{ post }}
  </li>
</ul>

没有问题,在函数内部,帖子值更改为我从服务器接收的帖子,但在函数外部,帖子值字段未定义。例如,在控制台中,我收到以下消息:

未定义

Array(100){...} // 100个数组

我知道为什么未定义值,因为需要花费一些时间从服务器获取值,但是为什么角度更改机制在填充post的值时无法识别更改?主要是为什么即使请求完成后我仍会出现黑屏!

注意:如果我将功能更改为箭头功能,则代码可以按预期工作,但是我想知道普通功能出了什么问题。

0 个答案:

没有答案