j'ai deux composants. Le premier composant comprend la liste du modèle et le deuxième composant contient la forme modale Je veux cliquer sur le modèle à l'intérieur du premier composant Dans le deuxième composant, ouvrez modal et modifiez le modèle comment appeler la fonction show dans le composant enfant à partir du composant parent
<ChildComponent />
<button onClick="@ShowModal">show modal</button>
@code{
ChildComponent child;
void ShowModal(){
child.Show();
}
}
je suis utilisé @using mais ce code a une erreur:
le type ou le nom de l'espace de noms ChildComponent est introuvable
Voici un article que je viens de publier sur le sujet en utilisant les interfaces:
https://datajugglerblazor.blogspot.com/2020/01/how-to-use-interfaces-to-communicate.html
Dans cet exemple, la page Index est un objet IBlazorComponentParent.
Sur le composant de connexion, la partie intéressante est de définir la propriété Parent, vous venez de définir Parent = this:
La façon dont cela fonctionne est que le setter pour la propriété Parent sur le composant Login appelle la méthode Register sur le parent:
[Parameter]
public IBlazorComponentParent Parent
{
get { return parent; }
set
{
// set the parent
parent = value;
// if the value for HasParent is true
if (HasParent)
{
// Register with the parent to receive messages from the parent
Parent.Register(this);
}
}
}
Ensuite, sur le composant ou la page parent, la méthode Register stocke la référence au composant:
public void Register(IBlazorComponent component)
{
// If the component object and Children collection both exist
if (NullHelper.Exists(component, Children))
{
// If this is the Login component
if (component.Name == "Login")
{
// Set the Login control
this.Login = component as Login;
}
// add this child
Children.Add(component);
}
}
À ce stade, le parent et la page de connexion peuvent communiquer entre eux car ils contiennent tous deux une méthode ReceiveData dans laquelle vous pouvez envoyer des messages.