инжектируемый объект получив его аргументом какого-то метода? Как они вообще это делают?
когда вы вызываете .open(), вы передаете как аргумент data: {..} это и есть ваш объект, и под капотом библиотека в DI регистрирует этот инстанс по токену MAT_DIALOG_DATA т.о. вы его в этом DI контексте можете получить - const data = inject(MAT_DIALOG_DATA) as IDialogData
Спасибо. Тут больше интересует как библиотека под капотом регистрирует инстанс по токену. Я так понимаю, что эти данные нужно закинуть в декоратор компонента/директивы. Но у меня так ни разу и не получилось покинуть туда динамические данные. В голове крутится подход с каким-то внутренним сервисом и useFactory, но выглядит слишком переусложненным решением. Может кто знает как это сделать проще?
Так может быть просто глянуть исходники? ) Они конечно замороченные там, но я думаю все-таки получится найти если поискать
как вариант посмотреть исходники DialogService сервис что вы инжектите инстанциируется в томже контексте что и вашкомпонент, т.е. в нем можно сохранить ссылку на data и использовать useFactory я бы наверно пошел таким путем
Думал, что это более-менее известный подход. Что сразу делает совет подобным 'посмотри исходники проекта и увидишь как фабрику написать')) Но судя по всему это _не_ известный подход. Значит буду смотреть рыться в исходниках)
Спасибо огромное. А я думал моя идея пересложненная. А тут ещё и форвардРеф используют))
там создание компонента же. метод создания компонента принимает так же инжектор. создается инжектор, в который провайдишь что угодно по токену, а потом оно будет доступно в созданном компоненте и его потомкам. свой диалог-реф достаточно просто пишется на cdk
Обсуждают сегодня