Caros, estou com este problema: Eu consigo trazer do banco atravez do "*ngFor=“let produto of produtos” " , desenha tudo bonitinho la no card do material (nome, valor, quantidade, foto…vindos do banco). Consegui colocar neste mesmo component htmt o iframe com uma string do link do youtube (usei as classe necessárias para isso). O problema é que eu não quero este video nesta tela, eu quero poder click em um botão e abrir um Dialog Material e lá colocar este video. eu não consigo passar o objeto produto para o Dialog. Como faço isso?
Queria que o meu “produto.urlSafe” fosse aceito la no meu dialog-show-video.component.html
Penso que, do jeito que vc fez, é preciso ter essa variável produto declarada no componente desse template. E essa variável precisaria ser preenchida com o item selecionado no momento do clique.
Quando verifico o inspecionar do navegador (console) tem:
core.mjs:24833 Angular is running in development mode. Call enableProdMode() to enable production mode.
produto-list.component.ts:53 ProdutoService
core.mjs:6461 ERROR NullInjectorError: R3InjectorError(AppModule)[MatDialogRef -> MatDialogRef -> MatDialogRef]:
NullInjectorError: No provider for MatDialogRef!
at NullInjector.get (core.mjs:11095:1)
at R3Injector.get (core.mjs:11262:1)
at R3Injector.get (core.mjs:11262:1)
at R3Injector.get (core.mjs:11262:1)
at NgModuleRef.get (core.mjs:21807:1)
at Object.get (core.mjs:21484:1)
at lookupTokenUsingModuleInjector (core.mjs:3334:1)
at getOrCreateInjectable (core.mjs:3446:1)
at Module.ɵɵdirectiveInject (core.mjs:14381:1)
at NodeInjectorFactory.DialogShowVideoComponent_Factory [as factory] (dialog-show-video.component.ts:15:38)
defaultErrorLogger @ core.mjs:6461
index.js:548 [webpack-dev-server] Live Reloading enabled.
Acho que vc só precisa renderizar um <app-dialog-show-video />. E ir mudando na medida em que o produto for escolhido para ter o vídeo apresentado.
Tente tirar o <app-dialog-show-video /> do ngFor. E cria uma variável, ex.: produtoSelecionado, para receber o produto que terá o vídeo apresentado.
Já o componente do vídeo, vc terá que controlar o momento em que ele irá aparecer. Talvez ele tenha alguma varíavel que indica se ele deve estar aberto (visível) ou não.
O componente de vídeo irá usar a variável do produto selecionado que vc criou:
Então não precisa recuperar o produto pelo ID de novo, basta atribuir o produto na variável do componente que está referenciada na declaração do componente de vídeo: