开发者问题收集

TypeError:未定义的属性(Angular)

2020-09-09
104

我有一个 .html 文件,我在其中使用 {{candidate.phone}> ,我可以在页面上看到结果,但在控制台中出现错误 ERROR TypeError:无法读取未定义的属性“phone” 。 如果我理解正确的话,这是因为 ngOnInit 不会等待 getCandidate() 的响应,所以问题是我如何在它完全完成后调用此函数?

这是我的代码:

candidate: ICandidatesInfo;
    
ngOnInit(): void {
  this.getCandidate();
}

getCandidate() {
  this.candidateInfoService
    .getById(this.route.snapshot.params['id'])
    .subscribe(candidate => this.candidate = candidate);
}

在服务中:

getById(id: string): Observable<ICandidatesInfo> {
  return this.http.get<ICandidatesInfo>(`${this.url}/${id}`);
}

非常感谢任何帮助!

1个回答

您有 3 个选项:

1 - 使用 *ngIf

<span *ngIf="candidate && candidate.phone">{{candidate.phone}}</span>

2 - 为您的模型 ( 候选 ) 设置默认值

candidate: ICandidatesInfo={phone:null , ... }

3 - 使用 ?

{{candidate?.phone}}
Abolfazl Roshanzamir
2020-09-09