This addon provides an API for authoring a Router service used in ember-engines.
- Ember.js v3.24 or above
- Embroider or ember-auto-import v2
ember install ember-engines-router-service
Basically you have the full RouterService API inside each engine. That means you can use APIs such as transitionTo
and isActive
, plus the new "external routing" APIs such as transitionToExternal
and isActiveExternal
which help link externalRoutes
together.
import Component from '@glimmer/component';
import { inject as service } from '@ember/service';
import { action } from "@ember/object";
export default class SomeComponent extends Component {
@service router;
@action
transitionToHome() {
this.router.transitionToExternal('other.route');
}
@action
transitionToAdmin() {
this.router.transitionTo('admin.route');
}
@action
redirectToHome() {
this.router.replaceWithExternal('other.route');
}
@action
redirectToLogin() {
this.router.replaceWith('login.route');
}
}
For further documentation on this subject, view the Engine Linking RFC.
The library ships types for TypeScript usage:
import Service, { inject as service } from '@ember/service';
import type EnginesRouterService from 'ember-engines-router-service/services/router';
export default class MyService extends Service {
@service declare router: EnginesRouterService;
doSomeTranstion (): void {
const transition = this.router.transitionToExternal('someRouter');
transition.data.someKey = 'someValue';
}
}
See the Contributing guide for details.
This project is licensed under the MIT License.