【发布时间】:2019-12-02 08:31:07
【问题描述】:
我有两个组件(1-app-student-list 2-app-student-detail)。
我想在student-list 中使用student-detail,如下所示:
app-student-detail.html
<p>Student Detail Component is here ....</p>
app-student-detail.ts
export class StudentDetailComponent {
showDetail() {
alert("We are in student-detail...");
}
}
app-student-list.html
<p>Student List Component is here ....</p>
<app-student-detail></app-student-detail>
app-student-list.ts
export class StudentListComponent implements OnInit {
@ViewChild(StudentDetailComponent, { static: true }) studentDetail: StudentDetailComponent;
constructor() { }
ngOnInit() {
}
showDetail() {
this.studentDetail.showDetail();
}
}
在showDetail方法中我想调用一个名为StudentDetailComponent的方法showDetail
最后,我想在 AppComponent 中使用 student-list
app.component.ts
export class AppComponent {
public isShow = false;
@ViewChild(StudentListComponent, { static: true }) studentList: StudentListComponent;
title = 'AngualrViewChild';
showDetail() {
this.isShow = true;
this.studentList.showDetail();
}
}
app.component.html
<p>App Component is here ....</p>
<app-student-list *ngIf="this.isShow"></app-student-list>
<hr />
<button type="button" (click)="this.showDetail()">
Show Detail
</button>
当我调用StudentListComponent 的showDetail 方法时,出现以下错误:
AppComponent.html:6 ERROR TypeError: Cannot read property 'showDetail' of undefined
注意:当我删除上面的ngIf 时,它会正常工作
【问题讨论】: