Como adicionar ações de um componente em um plugin-outlet?

Tenho tentado referenciar um componente existente em um plugin-outlet, mas continuo recebendo erros. E o principal problema parece ser as ações associadas ao componente. Existe uma maneira adequada de referenciar as ações de outro componente em um plugin outlet?

Eu teria pensado que, em um plugin-outlet, apenas referenciar o componente (ou seja, {{component-name action=(action \"doSomething\")...}}) funcionaria para trazer todo o código relevante das ações desse componente. Mas parece que não é o caso - porque continuo recebendo uma variedade de erros sobre certas coisas estarem indefinidas, definições incorretas e outras coisas que implicam que o javascript da ação não está sendo trazido para o plugin outlet corretamente.


Por exemplo:

Se em um template houver a seguinte referência ao componente composer-action-title, assim:
composer.hbs:

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

E eu quisesse adicionar um plugin outlet que - nesse plugin outlet - tivesse o mesmo código, assim:

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

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

O que preciso fazer para permitir que meu plugin outlet cool-outlet tenha a capacidade de referenciar com sucesso o componente composer-action-title, incluindo as ações “openComposer” e “closeComposer”?

Acho que entendi o básico disso — embora eu esteja feliz em ouvir se mais alguém tiver sugestões.

Para passar ações e outros argumentos para um plugin outlet, você pode adicioná-los à referência do plugin outlet assim como pode fazer com uma referência a um componente.

Mas cuidado para passar os argumentos corretos — ou seja, as referências de variáveis corretas.

Usando meu exemplo: Aqui está uma referência de componente que aparece no template composer.hbs:

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

Se você quiser substituir essa referência por uma referência a um plugin outlet (obviamente tendo cuidado se estiver editando um arquivo de template, dada a maior dificuldade de manter as coisas conforme o discourse muda), e quiser que o próprio plugin outlet referencie o componente composer-action-title, você pode colocar isso em composer.hbs:

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

E então em connectors/cool-outlet/cool-outlet.hbs, isso deve funcionar para referenciar o componente composer-action-title:

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

Note as variáveis aqui, elas são as variáveis definidas no arquivo composer.hbs.