我有一個名爲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'的構造函數。 –