Estou tentando encontrar alguns exemplos sobre como fazer uma caixa de diálogo modal de confirmação no Angular 2.0. Eu tenho usado a caixa de diálogo Bootstrap para Angular 1.0 e não consigo encontrar nenhum exemplo na Web para Angular 2.0. Eu também verifiquei documentos angulares 2.0 sem sorte.
Existe uma maneira de usar a caixa de diálogo Bootstrap com o Angular 2.0?
modal-dialog
angular
user636525
fonte
fonte
Respostas:
`
Para mostrar o pano de fundo , você precisará de algo como este CSS:
O exemplo agora permite vários modais ao mesmo tempo . (veja o
onContainerClicked()
método).Para usuários do Bootstrap 4 css , é necessário fazer uma pequena alteração (porque um nome de classe css foi atualizado no Bootstrap 3). Esta linha:
[ngClass]="{'in': visibleAnimate}"
deve ser alterada para:[ngClass]="{'show': visibleAnimate}"
Para demonstrar, aqui está um plunkr
fonte
div.modal-footer
e alterar o.app-modal-footer
para.modal-footer
corrigir isso.Aqui está um exemplo bastante decente de como você pode usar o modal Bootstrap em um aplicativo Angular2 no GitHub .
O essencial é que você pode agrupar a inicialização html e jquery do bootstrap em um componente. Eu criei um
modal
componente reutilizável que permite ativar uma abertura usando uma variável de modelo.Você só precisa instalar o pacote npm e registrar o módulo modal no seu módulo de aplicativo:
fonte
Essa é uma abordagem simples que não depende do jquery ou de qualquer outra biblioteca, exceto a Angular 2. O componente abaixo (errorMessage.ts) pode ser usado como uma exibição filho de qualquer outro componente. É simplesmente um modal de autoinicialização sempre aberto ou exibido. Sua visibilidade é governada pela instrução ngIf.
errorMessage.ts
errorMessage.html
Este é um exemplo de controle pai (algum código não relevante foi omitido por questões de brevidade):
parent.ts
parent.html
fonte
class="modal fade show in danger"
Agora disponível como um pacote NPM
angular-custom-modal
@Stephen Paul continuação ...
ngOnDestroy
quando o modal é encerrado.Inicialização lenta de conteúdo
Por quê?
Em alguns casos, talvez você não deseje modal para manter seu status após ter sido fechado, mas restaurado para o estado inicial.
Edição modal original
Passar o conteúdo diretamente para a visualização na verdade gera inicializa-o antes mesmo que o modal o obtenha. O modal não tem como matar esse conteúdo, mesmo que esteja usando um
*ngIf
wrapper.Solução
ng-template
.ng-template
não é processado até que seja solicitado.my-component.module.ts
my-component.ts
modal.component.ts
modal.component.html
Referências
Devo dizer que não teria sido possível sem a excelente documentação oficial e da comunidade em torno da rede. Pode ajudar alguns de vocês demais para entender melhor como
ng-template
,*ngTemplateOutlet
e@ContentChild
trabalho.https://angular.io/api/common/NgTemplateOutlet
https://blog.angular-university.io/angular-ng-template-ng-container-ngtemplateoutlet/
https://medium.com/claritydesignsystem/ng-content -the-hidden-docs-96a29d70d11b
https://netbasal.com/understanding-viewchildren-contentchildren-and-querylist-in-angular-896b0c689f6e
https://netbasal.com/understanding-viewchildren-contentchildren-and-querylist-in -angular-896b0c689f6e
Solução completa de copiar e colar
modal.component.html
modal.component.ts
modal.module.ts
fonte
Eu uso o ngx-bootstrap para o meu projeto.
Você pode encontrar a demo aqui
O github é aqui
Como usar:
Instale o ngx-bootstrap
Importar para o seu módulo
fonte
Aqui está minha implementação completa do componente angular2 de auto-inicialização modal:
Suponho que no seu arquivo index.html principal (com
<html>
e<body>
tags), na parte inferior da<body>
tag, você tenha:modal.component.ts:
modal.html:
E exemplo de uso no componente Editor do cliente: client-edit-component.ts:
client-edit.html:
Claro
title
,showClose
,<mhead>
e<mfoot>
ar opcionais parâmetros / tags.fonte
bindModal(modal) {this._modal=modal;}
, você pode usar do angularViewChild
anotação, assim:@ViewChild('editModal') _modal: Modal;
. Ele lida com a ligação para você nos bastidores.Verifique a caixa de diálogo ASUI criada em tempo de execução. Não há necessidade de ocultar e mostrar lógica. Simplesmente o serviço criará um componente em tempo de execução usando o AOT ASUI NPM
fonte
tente usar a ng-window, ele permitirá que o desenvolvedor abra e controle totalmente várias janelas em aplicativos de página única de maneira simples, sem jquery, sem bootstrap.
Configração Avilable
fonte
Angular 7 + NgBootstrap
Uma maneira simples de abrir o modal do componente principal e passar o resultado de volta para ele. é o que eu queria. Criei um tutorial passo a passo que inclui a criação de um novo projeto a partir do zero, a instalação do ngbootstrap e a criação do Modal. Você pode cloná-lo ou seguir o guia.
Espero que isso ajude de novo no Angular.!
https://github.com/wkaczurba/modal-demo
Detalhes:
modelo modal-simples (modal-simple.component.html):
O modal-simple.component.ts:
Demonstração (app.component.html) - maneira simples de lidar com o evento de retorno:
app.component.ts - onModalClosed é executado quando o modal é fechado:
Felicidades
fonte