Вы должны исходить из возможностей фреймворка, а фреймворк не предлагает ничего подобного. Если может быть более одного вида GridApiService <T> для одного инжектора, вам придется либо создать его подкласс, либо внедрить фабричную функцию или класс-оболочку, для которого создается аргумент T. Это потенциальная проблема XY, и предпочтительное решение может отличаться от того, что вы пытаетесь сделать. И AOT тоже наложит некоторые ограничения.

я есть декорированный модельный класс:

@Api('payments/deposit')
export class DepositsModel {
  public id: number;
  public created_at: Date;
  ...

В конструкторе угловых компонентов я внедряю сервис данных, указывающий на использование моего класса модели:

...
public constructor( 
  private $api: GridApiService<DepositsModel>
...
) {
  this.service = new GridService($api);
  ...
}
...

Итак, у моего классного компонента есть классный сервис, ведьма знает тип данных, с которыми он работает ...

Должен знать..

Но как я могу получить метаданные моей модели в моем GridApiService? Я пробовал:

@Injectable()
export class GridApiService<T>{
  constructor(
    $http: HttpClient,
  ) {
    let api = Reflect.getMetadata('Api', T);
  }

И получилСообщение об ошибке: «T» относится только к типу, но здесь используется в качестве значения.

ОБНОВИТЬ

Можете ли вы посоветовать мне другой способ передачи данных инициализации в мой GridApiService, который должен вводиться через DI, а не создаваться с новым ключевым словом?

Ответы на вопрос(1)

Ваш ответ на вопрос