eestein
eestein

Reputation: 5114

How can I open a modal component programmatically?

I'd like to open a modal programmatically like a modal service. This is how I did it in angular 1 :

uibModal.open({template:'url.html', controller: MyController}) that way I wouldn't need to add modal HTML code to my parent screen.

Let's say I have this folder structure:

components
-- screen1
---- parent.component.ts
-- modal1
---- modal1.component.ts
---- modal1.template.html
-- modal2
---- modal2.component.ts
---- modal2.template.html

then on parent.component.ts I'd like to open modal1

But since the modal I'm opening is dynamic I'd like it to open like a service (or anything similar). So I'm passing the information to my parent.component of which modal it should open, and then using a modal service (like in angular1) it opens the modal.

How can I approach this?

Thanks!

Upvotes: 0

Views: 6333

Answers (1)

pkozlowski.opensource
pkozlowski.opensource

Reputation: 117370

You can use angular-ui/bootstrap port to Angular 2 which has a service equivalent to uibModal: https://ng-bootstrap.github.io/#/components/modal

Its usage is equivalent to the Angular 1.x version - you just call the open() method on a service! Here is an example:

export class NgbdModalComponent {
  constructor(private modalService: NgbModal) {}

  open() {
    const modalRef = this.modalService.open(NgbdModalContent);
  }
}

Here is a live example: http://plnkr.co/edit/4pgz0My5Mnt4VoAkIsPa?p=preview

Upvotes: 3

Related Questions