0

这是我的代码:

notes.service.ts

      private notes: Array<Note> = [];
      notesChanged = new EventEmitter<Note[]>();
     
      getNotes() {
        this.getData();
        console.log('getNotes()', this.notes);
        return this.notes;
      }

      getData() {
         this.http.get<Note[]>(this.url).subscribe(
            (data) => {
                 this.notes = data;
                 this.notesChanged.emit(this.notes);
            }
         );
      }

notes.component.ts

      notes: Array<Note> = [];
 
      ngOnInit(): void {
          this.notes = this.notesData.getNotes();
          this.notesData.notesChanged.subscribe(
              (notes: Note[]) => this.notes = notes
          );
      }

notes.component.html

<div *ngFor="let item of notes" class="col-md-4">
   <a [routerLink]="['/note', item.id]" class="note-link">
      <div class="note-body text-center">
          <h4>{{item.title}}</h4>
          <p>{{item.text}}</p>
      </div>
   </a>
</div>

在浏览器中加载后不会显示笔记,只有当我离开然后返回笔记时,才会显示它们。

console.log('getNotes()', this.notes); 显示在浏览器中加载后数组为空。

4

2 回答 2

1

问题出在getNotes()方法上。它通过调用发送异步请求getData(),不等待结果,并且可以返回一个空列表(如果它没有时间完成)或来自服务器的数据(您有时通过浏览看到的内容)。你去的方法是订阅后返回notesgetData()

于 2021-03-18T17:35:39.683 回答
0

console.log('getNotes()', this.notes); 在对 api 的 getData 调用获得结果之前触发。这就是为什么您在页面加载日志中没有得到任何信息的原因。

你能显示notes.component.html吗?

于 2021-03-18T14:58:11.677 回答