J'ai un composant de notification de toast appelé ToastComponent
que je souhaite appeler depuis n'importe quel autre composant. Je mis en œuvre comme ceci:Angular 4 - Le composant @ViewChild est indéfini
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
qui est à l'intérieur du <router-outlet>
:
export class UserManagementComponent implements OnInit {
@ViewChild(ToastComponent) toast: ToastComponent;
constructor() {}
someSaveMethod() {
this.toast.showToast() // throws error below
}
}
En appelant la méthode someSaveMethod()
, je Sera l'erreur que toast
est indéfini.
Si je prends <llqa-toast></llqa-toast>
sur le app.component.html
et le mettre sur le user-management.component.html
, cela fonctionne très bien, mais alors je dois le mettre dans chaque composant. Comment puis-je faire en sorte que cela fonctionne?
Où est 'someSaveMethod' appelé? Essayez de vérifier avec les instructions 'console.log()' si le constructeur de 'ToastComponent' est appelé avant votre appel à' someSaveMethod'. –