<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic How do you inject the services you need into an extension data loader in Alfresco Forum</title>
    <link>https://connect.hyland.com/t5/alfresco-forum/how-do-you-inject-the-services-you-need-into-an-extension-data/m-p/21789#M9569</link>
    <description>&lt;P&gt;I have set up a data loader in my extension and configured it to load successfully from the aca app.&lt;/P&gt;&lt;P&gt;However, it is pretty useless as I cannot figure out how to inject a service into the data loader function.&lt;/P&gt;&lt;P&gt;My code follows the aca documentation&amp;nbsp;&lt;A href="https://alfresco-content-app.netlify.app/#/extending/custom-extension-loaders" target="_blank" rel="noopener nofollow noreferrer"&gt;https://alfresco-content-app.netlify.app/#/extending/custom-extension-loaders&lt;/A&gt;.&amp;nbsp; This shows you well how to set up a loader but skips over how to add a service to the ExtensionLoaderCallback.&amp;nbsp; The frustrating thing is that the example actually shows the callback using a service.&amp;nbsp; However, because the callback is implemented as a constant function I cannot figure out how to inject or use a service within it as it has no constructor for DI.&lt;/P&gt;&lt;P&gt;I have tried this (note I inject a service using inject) but it fails when the loader runs as the loader guard does not recognise it as the expected function template and the service does not get loaded:&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;export const myExtensionLoader = new InjectionToken('Extension Configuration', {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; factory: () =&amp;gt; (route: ActivatedRouteSnapshot) =&amp;gt; {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return inject(MyConfigurationService).loadConfig();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;});&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;I cannot find any other way of injecting the services I need into an exported constant.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;The following runs fine but as you can see has no service injected.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;export&lt;/SPAN&gt; &lt;SPAN&gt;const&lt;/SPAN&gt; &lt;SPAN&gt;myExtensionLoader&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;SPAN&gt;route&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt; &lt;SPAN&gt;ActivatedRouteSnapshot&lt;/SPAN&gt;&lt;SPAN&gt;) &lt;/SPAN&gt;&lt;SPAN&gt;=&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; console&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;log&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"My EXTENSION for route"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;route&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; return&lt;/SPAN&gt; &lt;SPAN&gt;of&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;true&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Hoping someone as tried to use a loader.&amp;nbsp; I cannot find any examples online and the included libraries for the aca app dont seem to use it.&amp;nbsp; Seems like the right way to do things though.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Thanks for any help&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Brian&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Tue, 09 Apr 2024 08:26:09 GMT</pubDate>
    <dc:creator>boneill</dc:creator>
    <dc:date>2024-04-09T08:26:09Z</dc:date>
    <item>
      <title>How do you inject the services you need into an extension data loader</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/how-do-you-inject-the-services-you-need-into-an-extension-data/m-p/21789#M9569</link>
      <description>&lt;P&gt;I have set up a data loader in my extension and configured it to load successfully from the aca app.&lt;/P&gt;&lt;P&gt;However, it is pretty useless as I cannot figure out how to inject a service into the data loader function.&lt;/P&gt;&lt;P&gt;My code follows the aca documentation&amp;nbsp;&lt;A href="https://alfresco-content-app.netlify.app/#/extending/custom-extension-loaders" target="_blank" rel="noopener nofollow noreferrer"&gt;https://alfresco-content-app.netlify.app/#/extending/custom-extension-loaders&lt;/A&gt;.&amp;nbsp; This shows you well how to set up a loader but skips over how to add a service to the ExtensionLoaderCallback.&amp;nbsp; The frustrating thing is that the example actually shows the callback using a service.&amp;nbsp; However, because the callback is implemented as a constant function I cannot figure out how to inject or use a service within it as it has no constructor for DI.&lt;/P&gt;&lt;P&gt;I have tried this (note I inject a service using inject) but it fails when the loader runs as the loader guard does not recognise it as the expected function template and the service does not get loaded:&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;export const myExtensionLoader = new InjectionToken('Extension Configuration', {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; factory: () =&amp;gt; (route: ActivatedRouteSnapshot) =&amp;gt; {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return inject(MyConfigurationService).loadConfig();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;});&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;I cannot find any other way of injecting the services I need into an exported constant.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;The following runs fine but as you can see has no service injected.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;export&lt;/SPAN&gt; &lt;SPAN&gt;const&lt;/SPAN&gt; &lt;SPAN&gt;myExtensionLoader&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;SPAN&gt;route&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt; &lt;SPAN&gt;ActivatedRouteSnapshot&lt;/SPAN&gt;&lt;SPAN&gt;) &lt;/SPAN&gt;&lt;SPAN&gt;=&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; console&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;log&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"My EXTENSION for route"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;route&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; return&lt;/SPAN&gt; &lt;SPAN&gt;of&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;true&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Hoping someone as tried to use a loader.&amp;nbsp; I cannot find any examples online and the included libraries for the aca app dont seem to use it.&amp;nbsp; Seems like the right way to do things though.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Thanks for any help&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Brian&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Tue, 09 Apr 2024 08:26:09 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/how-do-you-inject-the-services-you-need-into-an-extension-data/m-p/21789#M9569</guid>
      <dc:creator>boneill</dc:creator>
      <dc:date>2024-04-09T08:26:09Z</dc:date>
    </item>
  </channel>
</rss>

