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.