if you pass the config object into transitionToRoute as you described (this.transitionToRoute('config', config);) it should automatically inject it as the child model and skip the child model hook (see the docs)
alternatively you could use a service to look up the config in the child route model hook
That pattern you described is likely to break as soon as someone tries to refresh the page on the config route. Passing the model to transitionTo will skip the model() hook, but then if users refresh directly while they’re already on the config route, the model() hook is going to run and need to know what to do on its own. It needs to call createConfig.
If createConfig is complicated but stateless, make it a separate library function that’s imported by all the places that need it. If it’s stateful, put it on a Service.
I would create the config in the parent route’s model hook, then use this.modelFor to use that same model in whatever routes need the config. Something like this:
Then there is no need to pass it anywhere, it will pull in the model from the other route. The model hook can be used for loading any data, not just ember-data models.