rob*_*ert 14 modal-dialog typescript ng-bootstrap angular
这就是我使用ng2-bootstrap模式的方式:
import {Component} from '@angular/core';
import {NgbModal} from '@ng-bootstrap/ng-bootstrap';
@Component({
  selector: 'add-customer-modal',
  template: `
    <template #test let-c="close" let-d="dismiss">
      <div class="modal-header">
        <button type="button" class="close" aria-label="Close" (click)="d('Cross click')">
          <span aria-hidden="true">×</span>
        </button>
        <h4 class="modal-title">Modal title</h4>
      </div>
      <div class="modal-body">
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" (click)="c('Close click')">Close</button>
      </div>
    </template>
    <button type="button" class="btn btn-primary btn-sm" (click)="open(test)"><i class="fa fa-plus"></i> <i class="fa fa-user-o"></i></button>
  `
})
export class AddCustomerModal {
  constructor(private modalService: NgbModal) {}
  open(content) {
    this.modalService.open(content, { size: 'lg' }).result.then((result) => {
      console.log(result);
    }, (reason) => {
      console.log(reason);
    });
  }
}
我有点困惑,因为我认为内容用于将参数传递给模态.但在我看来,这只是open方法需要找到正确模板的名称?
那么如何传递参数呢?
Pie*_*Duc 14
要将参数/数据传递给模态,我的猜测是使用componentInstance:
open(content) {
    const modal: NgbModalRef = this.modalService.open(content, { size: 'lg' });
    (<MyComponent>model.componentInstance).data = 'hi';
    modal.result.then((result) => {
      console.log(result);
    }, (reason) => {
      console.log(reason);
    });
}
这假定componentInstance是类型MyComponent,并且它具有公共属性data
Sad*_*Ali 11
任何仍然磕磕绊绊的人可能会发现这个方便,您需要做的就是在ModalComponent中声明一个字段,如下所示:
 modalHeader: string;
 advertiser: Advertiser;
您可以在打开模态时通过执行以下操作来设置这些字段.
advertiserModalShow() {
    const activeModal = this.modalService.open(AdvertiserModal, { size: 'lg' });
    activeModal.componentInstance.modalHeader = 'Advertiser';
    activeModal.componentInstance.advertiser = this.selectedAdvertiser;
}
在您的模板中,您可以像这样访问它们:
value={{advertiser.code}}
希望这可以帮助.
如果您需要在模态构造后立即获取数据,则有更好的方法来处理模态中的数据。采用角喷射技术。
class CustomModalOptions {
  stringProp: string; 
  numberProp: number;
}
this.modal.open(MyModal, {
  injector: Injector.create([{
    provide: CustomModalOptions, useValue: { stringProp: "foo bar", numberProp: 17 }
  }], this.injector)
});
@Component({ ... })
class MyModal {
  constructor(private options: CustomModalOptions) {
    console.log(this.options.stringProp);
    console.log(this.options.numberProp);
  }
}
| 归档时间: | 
 | 
| 查看次数: | 19376 次 | 
| 最近记录: |