简体   繁体   中英

Angular 7 + ngx-bootstrap 3.1.3

Here is a blank angular 7 project in stackblitz, in Angular 6 I used constructor(private bsModalRef: BsModalRef) so I can pass values to my child popup component.

But when I update to angular 7, it said Module not found: Error: Can't resolve 'ngx-bootstrap/modal/bs-modal-ref.service' .

In stackblitz, it asked me to install ngx-bootstrap but I already installed.

Any idea?

First thing is you need to change your import in app.component.ts from

import { BsModalRef } from 'ngx-bootstrap/modal/bs-modal-ref.service';

to

import { BsModalRef } from 'ngx-bootstrap';

then you will have to provide providers in app.module

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { BsModalRef } from 'ngx-bootstrap';

import { AppComponent } from './app.component';
import { HelloComponent } from './hello.component';
import { ModalModule } from 'ngx-bootstrap/modal';
import { BsDropdownModule } from 'ngx-bootstrap/dropdown';

@NgModule({
  imports:      [ BrowserModule, FormsModule,ModalModule.forRoot(),
  BsDropdownModule.forRoot() ],
  declarations: [ AppComponent, HelloComponent ],
  bootstrap:    [ AppComponent ],
  providers: [BsModalRef]
})
export class AppModule { }

working STACKBLITZ

Please

 import {BsModalRef} from 'ngx-bootstrap/modal/bs-modal-ref.service' 

and inject the BsModalService as a dependency.

According to the docs here , you'll need to inject the BsModalService as a dependency. But you're injecting BsModalRef .

Here's the correct syntax:

import { BsModalService } from 'ngx-bootstrap/modal';
import { BsModalRef } from 'ngx-bootstrap/modal/bs-modal-ref.service';
...
modalRef: BsModalRef;
constructor(private modalService: BsModalService) {}

openModal(template: TemplateRef<any>) {
  this.modalRef = this.modalService.show(template);
}

Here's a Working StackBlitz Example for your ref.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM