Не удается разрешить все параметры для RouterUtilities - PullRequest
0 голосов
/ 21 сентября 2018

Я хочу создать класс RouterUtilities, который расширяет Angular's Router.Приложение работает и корректно компилируется, но ng build --prod возвращает ошибку, такую ​​как:

ERROR in : Can't resolve all parameters for RouterUtilities in .../utils/router/router-utilities.ts: (?, [object Object], [object Object], [object Object], [object Object], [object Object],
[object Object], ?).

router-utilities.ts

import { Compiler, Injectable, Injector, NgModuleFactoryLoader, Type } from '@angular/core';
import { Location } from '@angular/common';
import { Router, UrlSerializer, ChildrenOutletContexts, Routes } from '@angular/router';
import { formatPattern } from 'url-matcher';

import { Dictionary } from '../../../shared/interfaces/common.interface';

@Injectable()
export class RouterUtilities extends Router {
  constructor(rootComponentType: Type<any> | null,
              urlSerializer: UrlSerializer,
              rootContexts: ChildrenOutletContexts,
              location: Location,
              injector: Injector,
              loader: NgModuleFactoryLoader,
              compiler: Compiler,
              config: Routes) {
    super(rootComponentType, urlSerializer, rootContexts, location, injector, loader, compiler, config);
  }

  static getAbsoluteRoute(routePath: string, params: Dictionary<string> = {}): string {
    return 'something';
  }
}

У вас есть идеи, почему это происходит?

  1. Я включил эту RouterUtilities в провайдеров модуля.
  2. Я еще не внедрил эту службу ни в один компонент / службу.
  3. Ошибка возвращается, даже если этасервис не использовался.

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Решение состояло в том, чтобы включить Маршрутизатор в следующие типы:

providers: [ { provide: RouterUtilities, useClass: RouterUtilities, deps: [Router] } ]

0 голосов
/ 21 сентября 2018

Есть разница, когда вы используете --prod build.Compiler доступно только при компиляции Just-in-Time (JIT), а переключатель --prod включает компиляцию Ahead-of-Time (AOT).Поэтому, когда angular пытается скомпилировать ваш сервис на заводе, он не может найти зависимость Compiler.

Может быть, это длинное обсуждение github поможет вам как-то.

...