Come aggiungere le azioni di un componente in un plugin-outlet?

Sto cercando di fare riferimento a un componente esistente in un plugin-outlet, ma continuo a ricevere errori. E il problema principale sembrano essere le azioni associate al componente. Esiste un modo corretto per fare riferimento alle azioni di un altro componente in un plugin outlet?

Pensavo che in un plugin-outlet, il semplice riferimento al componente (ad esempio, {{component-name action=(action \"doSomething\")...}}) sarebbe stato sufficiente per includere tutto il codice pertinente delle azioni di quel componente. Ma sembra che non sia così, perché continuo a ricevere una varietà di errori riguardanti cose non definite, definizioni errate e altro ancora, che implicano che il codice JavaScript dell’azione non venga incluso correttamente nell’plugin outlet.


Ad esempio:

Se in un template è presente il seguente riferimento al componente composer-action-title, in questo modo:
composer.hbs:

 {{composer-action-title
       model=model
        openComposer=(action "openComposer")
        closeComposer=(action "closeComposer")
        canWhisper=canWhisper
        tabindex=8
  }}

E volessi aggiungere un plugin outlet che – in quell’plugin outlet – avesse lo stesso codice, come:

connectors/cool-outlet/cool-outlet.hbs:

 {{composer-action-title
       model=model
        openComposer=(action "openComposer")
        closeComposer=(action "closeComposer")
        canWhisper=canWhisper
        tabindex=8
  }}

Cosa devo fare per consentire al mio plugin outlet cool-outlet di fare riferimento con successo al componente composer-action-title, incluse le azioni “openComposer” e “closeComposer”?

Penso di aver capito le basi, anche se sono felice di sentire se qualcun altro ha suggerimenti.

Per passare azioni e altri argomenti a un plugin outlet, puoi aggiungerli al riferimento del plugin outlet proprio come faresti con un riferimento a un componente.

Ma fai attenzione a passare gli argomenti giusti, cioè i giusti riferimenti di variabile.

Usando il mio esempio: ecco un riferimento di componente che appare nel template composer.hbs:

{{composer-action-title
       model=model
       openComposer=(action "openComposer")
       closeComposer=(action "closeComposer")
       canWhisper=canWhisper
       tabindex=8
  }}

Se vuoi sostituire questo riferimento con un riferimento a un plugin outlet (ovviamente facendo attenzione se stai modificando un file template, data la maggiore difficoltà di mantenere le cose al cambiare di discourse), e vuoi che il plugin outlet stesso faccia riferimento al componente composer-action-title, potresti mettere questo in composer.hbs:

{{plugin-outlet name="cool-outlet" args=(hash
       model=model
       openComposer=(action "openComposer")
       closeComposer=(action "closeComposer")
       canWhisper=canWhisper
       tabindex=8
    )
}}

E poi in connectors/cool-outlet/cool-outlet.hbs, questo dovrebbe funzionare per fare riferimento al componente composer-action-title:

{{composer-action-title
       model=model
       openComposer=openComposer
       closeComposer=closeComposer
       canWhisper=canWhisper
       tabindex=8
  }}

Nota le variabili qui, sono le variabili impostate nel file composer.hbs.