【发布时间】:2018-01-24 08:53:25
【问题描述】:
我有一个名为 ToastComponent 的 toast 通知组件,我想从任何其他组件调用它。我是这样实现的:
ToastComponent:
export class ToastComponent implements OnInit {
constructor() {}
showToast() {
// some code
}
}
app.component.html:
<llqa-main-container>
<llqa-header></llqa-header>
<div class="content-container">
<main class="content-area">
<llqa-toast></llqa-toast> <!-- ToastComponent which I want to call -->
<router-outlet></router-outlet>
</main>
</div>
</llqa-main-container>
UserManagementComponent 在<router-outlet> 内:
export class UserManagementComponent implements OnInit {
@ViewChild(ToastComponent) toast: ToastComponent;
constructor() {}
someSaveMethod() {
this.toast.showToast() // throws error below
}
}
在调用someSaveMethod() 方法时,我会得到toast 未定义的错误。
如果我从app.component.html 中取出<llqa-toast></llqa-toast> 并将其放在user-management.component.html 之上,它可以正常工作,但是我必须将它放在每个组件中。我怎样才能让它工作?
【问题讨论】:
-
someSaveMethod在哪里被调用?尝试使用console.log()语句检查ToastComponent的构造函数是否在您调用someSaveMethod之前被调用。
标签: angular typescript angular-components