Angular 9: как исправить эту проблему Typescript для ModuleWithProviders - PullRequest
0 голосов
/ 30 марта 2020

В моем angular проекте у меня есть следующий код:

// one module

@NgModule({
   ...
})
export class SecondModule {
  public static forRoot(
    SecondConfig: Config
  ): ModuleWithProviders<SecondModule> {
    return DIYModuleWithProviders(SecondModule, SecondConfig);
  }
  ...
 }

// fuction from another module
export function DIYModuleWithProviders(
  module: any,
  config: Config
): ModuleWithProviders {
  return {
    ngModule: module,
    providers: [
      {
        ...
      },
      {
        ...
      }
    ]
  };
}

В Angualr 8 это работает очень хорошо. Но после обновления до Angular 9, поскольку ModuleWithProviders должен иметь тип generi c. Поэтому мне нужно изменить этот код следующим образом:

// one module

@NgModule({
   ...
})
export class SecondModule {
  public static forRoot(
    SecondConfig: Config
  ): ModuleWithProviders<SecondModule> {
    return DIYModuleWithProviders<SecondModule>(SecondModule, SecondConfig); // yes, some wrong here
  }
  ...
 }

// fuction from another module
export function DIYModuleWithProviders<T>(
  module: T,
  config: Config
): ModuleWithProviders<T> {
  return {
    ngModule: module,
    providers: [
      {
        ...
      },
      {
        ...
      }
    ]
  };
}

в комментарии выше кода, вы можете найти проблему DIYModuleWithProviders<SecondModule>(SecondModule, SecondConfig), ранее SecondModule передавался как значение аргумента, но теперь он используется как тип Сначала аргумент, поэтому приведенный выше код не может работать. Ошибка машинописи:

Type 'T' is not assignable to type 'Type<T>'.

Как решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...