Угловая инъекция зависимости — игнорировать, если она не указана — вариант использования: MAT_DIALOG_DATA

некоторые из моих компонентов. иметь 2 исходных параметра через конструктор.

  1. параметры маршрутов, для использования через URL.
  2. matDialogData, используется, когда компонент открывается в диалоговом окне.

так:

constructor(private dialog: MatDialog,
private route:ActivatedRoute,
@Inject(MAT_DIALOG_DATA) private data)

опция matDialog работает нормально, но опция маршрута (работала нормально до добавления matDialogData) терпит неудачу с:

ERROR Error: Uncaught (in promise): NullInjectorError: R3InjectorError(AppModule)[InjectionToken MatDialogData -> InjectionToken MatDialogData -> InjectionToken MatDialogData]: 
  NullInjectorError: No provider for InjectionToken MatDialogData!
NullInjectorError: R3InjectorError(AppModule)[InjectionToken MatDialogData -> InjectionToken MatDialogData -> InjectionToken MatDialogData]: 
  NullInjectorError: No provider for InjectionToken MatDialogData!

Есть ли способ настроить этот параметр @Inject(MAT_DIALOG_DATA) private data как обнуляемый/необязательный и игнорировать эту ошибку?

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
157
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вы можете использовать декоратор @Optional() следующим образом:

class SomeClass {
  constructor(
    private dialog: MatDialog,
    private route:ActivatedRoute,
    @Optional() @Inject(MAT_DIALOG_DATA) private data
  ) {}
}

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