我有一个名为ToastComponent
的烤面包通知组件,我想从任何其他组件调用。我实现这样的:Angular 4 - @ViewChild组件未定义
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()'语句来检查在调用'someSaveMethod'之前是否调用了'ToastComponent'的构造函数。 –