我使用ng2-bootstrap和模态组件。但是,问题不在于ng2-bootstrap。我的root
组件中有以下模板:
... for brevity
<div bsModal #lgModal="bs-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="modalLabel"
aria-hidden="true">
<div class="modal-dialog modal-md">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" (click)="lgModal.hide()" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title">Header</h4>
</div>
<div class="modal-body">
<p>Modal body</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default">Save</button>
</div>
</div>
</div>
</div>
我希望在组件中获得lgModal
。所以,在我的组件中:
@ViewChild('lgModal')
public lgModal: ModalDirective;
一切正常。但是,我想把modal html放到单独的组件中。例如,app-modal
。然后,在root
组件中我有:
...for brevity
<app-modal></app-modal>
但是,在这种情况下,lgModal
组件中的root
未定义。如何妥善处理?
答案 0 :(得分:1)
在您的父组件中定义子组件,如下所示:
@ViewChild(AppModalComponent) appModalComponent: AppModalComponent; //assuming the name of the child component is AppModalComponent
移动
@ViewChild('lgModal')
public lgModal: ModalDirective;
到子组件。 然后,您可以使用
访问子组件中的lgModal
属性
this.appModalComponent.lgModal = "something";
在您的父组件中。
参考:https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#parent-calls-a-viewchild-