¿Cómo agregar las acciones de un componente a un 'plugin-outlet'?

He estado intentando referenciar un componente existente en un plugin-outlet, pero sigo recibiendo errores. Y el problema principal parecen ser las acciones asociadas con el componente. ¿Hay una forma adecuada de referenciar las acciones de otro componente en un plugin outlet?

Habría pensado que en un plugin-outlet, simplemente referenciar el componente (es decir, {{component-name action=(action \"doSomething\")...}}) funcionaría para incorporar todo el código relevante de las acciones de ese componente. Pero parece que no es así, porque sigo recibiendo una variedad de errores sobre ciertas cosas que no están definidas, definiciones incorrectas y otras cosas que implican que el javascript de la acción no se está incorporando correctamente al plugin outlet.


Por ejemplo:

Si en una plantilla hay la siguiente referencia al componente composer-action-title, así:
composer.hbs:

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

y quisiera agregar un plugin outlet que, en ese plugin outlet, tuviera el mismo código, así:

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

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

¿Qué necesito hacer para permitir que mi plugin outlet cool-outlet tenga la capacidad de referenciar con éxito el componente composer-action-title, incluidas las acciones “openComposer” y “closeComposer”?

Creo que he captado la idea general, aunque estaré encantado de escuchar si alguien más tiene sugerencias.

Para pasar acciones y otros argumentos a un plugin outlet, puedes añadirlos a la referencia del plugin outlet al igual que puedes hacerlo con una referencia a un componente.

Pero ten cuidado de pasar los argumentos correctos, es decir, las referencias de variables correctas.

Usando mi ejemplo: Aquí hay una referencia de componente que aparece en la plantilla composer.hbs:

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

Si deseas reemplazar esta referencia con una referencia a un plugin outlet (siendo obviamente cuidadoso si estás editando un archivo de plantilla, dada la mayor dificultad de mantener las cosas a medida que Discourse cambia), y deseas que el plugin outlet en sí mismo haga referencia al componente composer-action-title, podrías poner esto en composer.hbs:

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

Y luego, en connectors/cool-outlet/**cool-outlet.hbs, esto debería funcionar para referirse al componente composer-action-title:

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

Ten en cuenta las variables aquí, son las variables establecidas en el archivo composer.hbs.