typescript - Ember & Typescript - 如何注入路由器服务
问题描述
我正在尝试将 RouterService 注入我的控制器:
import Controller from '@ember/controller';
import { action } from '@ember/object';
import { inject as service } from '@ember/service';
import RouterService from '@ember/routing/router-service';
export default class Search extends Controller.extend({
// anything which *must* be merged to prototype here
}) {
@service router!: RouterService;
@action
actionClick(){
this.router.transitionTo('protected.apk.detail')
}
}
// DO NOT DELETE: this is how TypeScript knows how to look up your controllers.
declare module '@ember/controller' {
interface Registry {
'search': Search;
}
}
但我收到一个错误:Error: Assertion Failed: Attempting to inject an unknown injection: 'service:router'
我想这是因为没有 service:router,而是 router:main 。你能告诉我,如何正确注入RouterService吗?这个控制器在我的引擎里。余烬版本:3.18.0
谢谢你
解决方案
服务底部的类型定义是一个线索。
import Controller from '@ember/controller';
import { action } from '@ember/object';
import { inject as service } from '@ember/service';
import { Registry as Services } from '@ember/service';
export default class Search extends Controller {
@service router!: Services['router'];
@action
actionClick(){
this.router.transitionTo('protected.apk.detail')
}
}
推荐阅读
- javascript - 放大时增加点长
- javascript - 使用字符串数组删除嵌套数组中的特定数据
- android - Android 上的 FFMProbe 输出
- javascript - 如何在后端使用 Django 并在前端使用 Vue js 开发移动应用程序?
- javascript - 使用 REACT 可视化 textarea 中的 onkeypress 换行符
- azure-sql-database - 如何将 Visual Studio SQL 服务器 LocalDB 上传到 Azure
- reactjs - useEffect 清理功能不会立即更新数据?
- mongodb - 我需要在 MongoDB 中使用带有文本索引的常规索引吗?
- json - SQL Server:创建 Json 列
- mysql - 在 MariaDB 存储过程中使用 LOOP 时出现错误已解决