Ember & Typescript - как внедрить сервис роутера - PullRequest
1 голос
/ 26 апреля 2020

Я пытаюсь внедрить 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' Я полагаю, это потому, что вместо этого есть сервис: router, а router: main. Можете ли вы посоветовать мне, как правильно вводить RouterService? Этот контроллер в моем двигателе. ember версия: 3.18.0

спасибо

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Определения типов в нижней части службы являются подсказкой.

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')
    }
}
0 голосов
/ 27 апреля 2020

вы вводите сервис роутера следующим образом

@service router;
...