This addon provides an API for authoring a Router service used in ember-engines.
- Ember.js v3.12 or above
- Ember CLI v3.24 or above
- Node.js v14 or above
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';
type Transition = ReturnType<EnginesRouterService['transitionTo']> & { sequence: number };
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.