универсальный тип angular внутри автономного компонента

Автономный компонент динамического значка

Я пытаюсь создать динамический компонент значка, который в любом модуле заполняется новым набором активов. Я хочу отправить ему новое перечисление и получить соответствующий интеллект типа ввода.

      import { CommonModule } from '@angular/common';
import { Component, Input } from '@angular/core';

type StandardEnum = object;

@Component({
  selector: 'fnx-nx-client-test',
  templateUrl: './test.component.html',
  styleUrls: ['./test.component.scss'],
  standalone: true,
  imports: [CommonModule],
})
export class AppIconComponent<T extends StandardEnum> {
  static iconClass?: StandardEnum;
  @Input() iconName: keyof T;
  @Input() disabled: boolean;
  get iconClass(): T {
    return AppIconComponent.iconClass as T;
  }
  public static forRoot<U extends StandardEnum>(
    iconEnum?: U
  ): typeof AppIconComponent<U> {
    AppIconComponent.iconClass = iconEnum;
    return this;
  }
}

Компонент пишет, как и ожидалось. При использовании в модуле приложения появляется следующая ошибка.

      enum myEnum {
  ONE = 1,
}

@NgModule({
  imports: [
    AppIconComponent.forRoot<myEnum>(myEnum),
 ]
}) export class AppModule {}

ошибка :

          new (): AppIconComponent<typeof t>;
    prototype: AppIconComponent<any>;
    iconClass?: object;
    forRoot<U extends object>(iconEnum?: U): {
        ...;
    };
}
Value at position 0 in the NgModule.imports of AppModule is not a reference
  Value could not be determined statically.(-991010)
app.module.ts(16, 5): Unable to evaluate function call of complex function. A function must have exactly one return statement.
test.component.ts(17, 2): Function is declared here.

1 ответ

Я действительно не знаю, почему это происходит, но мне помог перезапуск моей идеи. Я использую код vs.

Видел ответ здесь. Angular 9: значение в позиции X в NgModule.imports не является ссылкой.

Чтобы перезапустить vs code, вам просто нужна эта команда:

right ctrl + right shiftдля Windows.right command + right shiftдля Мака.

Держите их нажатыми, а затем нажмитеPи выберите «Разработчик: перезагрузить окно».

В зависимости от вашей IDE или редактора вы можете сделать то же самое. Надеюсь, это будет полезно для кого-то.

Другие вопросы по тегам