对于想了解Angular中的MockNgbModal的读者,本文将提供新的信息,我们将详细介绍Angular中的spa是哪三个单词缩写,并且为您提供关于angularmodal详解、Angularui
对于想了解Angular中的Mock NgbModal的读者,本文将提供新的信息,我们将详细介绍Angular中的spa是哪三个单词缩写,并且为您提供关于angular modal 详解、Angular uibModal,解析,未知提供程序、angular – ngbModal作为通用的Confrimation Box、angular – ngx-bootstrap modal – 通过bsModalRef.content访问传入modal的数据的有价值信息。
本文目录一览:- Angular中的Mock NgbModal(Angular中的spa是哪三个单词缩写)
- angular modal 详解
- Angular uibModal,解析,未知提供程序
- angular – ngbModal作为通用的Confrimation Box
- angular – ngx-bootstrap modal – 通过bsModalRef.content访问传入modal的数据
Angular中的Mock NgbModal(Angular中的spa是哪三个单词缩写)
openModal(deviceid: string,productID: string){ const modalRef = this.modalService.open(ProductModal) modalRef.componentInstance.content = { deviceid: deviceid,productId: productID } modalRef.componentInstance.toEmit.subscribe(($e) => { if ($e === true) this.reloadList(); }); }
我应该做些什么?
解决方法
如您所见,在使用.open()后,您的modalRef.componentInstance将是ProductModal的一个实例;因此,您可以将ProductModal作为任何组件进行测试,例如组件夹具和完全跳过modalService:
(同样,假设ProductModal是具有适当装饰的组件.)
let component: ProductModal; let fixture: ComponentFixture<ProductModal>; beforeEach(() => { Testbed.configureTestingModule({ providers: [ NgbModal,NgbActiveModal ],declarations: [ ProductModal ] }); fixture = Testbed.createComponent(ProductModal); component = fixture.componentInstance; fixture.detectChanges(); }); // Now you have the component in `component`,so you can test // component.content // component.toEmit // …
angular modal 详解
$modal
是一个可以迅速创建模态窗口的服务,创建部分页,控制器,并关联他们
$modal
仅有一个方法open(options)
-
templateUrl
:模态窗口的地址 -
template:用于显示html标签
-
scope
:一个作用域为模态的内容使用(事实上,$modal会创建一个当前作用域的子作用域
)默认为$rootScope
-
controller
:为$modal指定的控制器,初始化$scope,该控制器可用$modalInstance
注入 -
resolve
:定义一个成员并将他传递给$modal指定的控制器,相当于routes的一个reslove属性,如果需要传递一个objec对象,需要使用angular.copy() -
backdrop
:控制背景,允许的值:true(默认),false(无背景),“static
” - 背景是存在的,但点击模态窗口之外时,模态窗口不关闭 -
keyboard
:当按下Esc时,模态对话框是否关闭,默认为ture -
windowClass
:指定一个class并被添加到模态窗口中
open方法返回一个模态实例,该实例有如下属性
-
close(result)
:关闭模态窗口并传递一个结果 -
dismiss(reason)
:撤销模态方法并传递一个原因 -
result
:一个契约,当模态窗口被关闭或撤销时传递 -
opened
:一个契约,当模态窗口打开并且加载完内容时传递的变量
另外,$modalInstance扩展了两个方法$close(result)
、$dismiss(reason)
,这些方法很容易关闭窗口并且不需要额外的控制器
<!DOCTYPE html> <html ng-app="ModalDemo"> <head> <title></title> <link href="lib/bootstrap/css/bootstrap.min.css" rel="stylesheet"> <script src="lib/angular/angular.min.js"></script> <script src="lib/bootstrap-gh-pages/ui-bootstrap-tpls-0.7.0.min.js"></script> <script src="lib/angular/i18n/angular-locale_zh-cn.js"></script> </head> <body> <div ng-controller="ModalDemoCtrl"> <script type="text/ng-template" id="myModalContent.html"> <div > <h3>I''m a modal!</h3> </div> <div > <ul> <li ng-repeat="item in items"> <a ng-click="selected.item = item">{{ item }}</a> </li> </ul> Selected: <b>{{ selected.item }}</b> </div> <div > <button ng-click="ok()">OK</button> <button ng-click="cancel()">Cancel</button> </div> </script> <button ng-click="open()">Open me!</button> </div> <script> var ModalDemo = angular.module(''ModalDemo'', [''ui.bootstrap'']); var ModalDemoCtrl = function ($scope, $modal, $log) { $scope.items = [''item1'', ''item2'', ''item3'']; $scope.open = function () { var modalInstance = $modal.open({ templateUrl: ''myModalContent.html'', controller: ModalInstanceCtrl, resolve: { items: function () { return $scope.items; } } }); modalInstance.opened.then(function(){//模态窗口打开之后执行的函数 console.log(''modal is opened''); }); modalInstance.result.then(function (result) { console.log(result); }, function (reason) { console.log(reason);//点击空白区域,总会输出backdrop click,点击取消,则会暑促cancel $log.info(''Modal dismissed at: '' + new Date()); }); }; }; var ModalInstanceCtrl = function ($scope, $modalInstance, items) { $scope.items = items; $scope.selected = { item: $scope.items[0] }; $scope.ok = function () { $modalInstance.close($scope.selected); }; $scope.cancel = function () { $modalInstance.dismiss(''cancel''); }; }; </script> </body> </html>
原网址:http://www.html5jq.com/fe/angular_node/20150302/46.html
Angular uibModal,解析,未知提供程序
我试图通过服务公开使用Angular的$ uibModal的“通用”模式。这是该服务的定义:
angular.module('app').service('CustomModalService',['$uibModal',function ($uibModal) {
var openCustomModal = function (size,title,message) {
var actionToPerformOnConfirm = action;
var modalInstance = $uibModal.open({
templateUrl : 'templates/CustomModal.html',size: size,resolve: {
title: title,message: message
}
});
};
return {
openCustomModal: openCustomModal
};
}]);
上面没有什么太复杂的。但是,它不起作用。如果我resolve
从对象中删除该属性,则该服务有效;但是,如果包含该resolve
属性,则会收到源自该属性的未知提供程序错误。
该resolve
属性的文档为:
(类型:对象)-将被解析并作为本地成员传递给控制器的成员;它等效于路由器中的resolve属性。
目的是能够为在其DOM中利用这些属性的模态提供模板,例如:
<div ng-controller="CustomModalController">
<div>
<h3>{{title}}</h3>
</div>
<div>
{{message}}
</div>
<div>
<buttontype="button" ng-click="confirmAction()"></button>
<buttontype="button" ng-click="cancelAction()"></button>
</div>
</div>
我缺少什么导致此错误引发?
angular – ngbModal作为通用的Confrimation Box
const modalRef = this.modalService.open(ConfirmationBoxComponent,{backdrop:"static"}) modalRef.componentInstance.name = "Message"; modalRef.componentInstance.confirmationBoxTitle = "Confirmation?" modalRef.componentInstance.confirmationmessage = "Do you want to cancel?" modalRef.componentInstance.changeRef.markForCheck();
解决方法
<button (click)="activeModal.close(true)">Yes</button> <button (click)="activeModal.close(false)">No</button>
之后,您可以从NgbModalRef的结果承诺中获取用户的答案(通知modalRef.result.then):
open() { const modalRef = this.modalService.open(NgbdModalContent); modalRef.componentInstance.confirmationBoxTitle = 'Confirmation?'; modalRef.componentInstance.confirmationMessage = 'Do you want to cancel?'; modalRef.result.then((userResponse) => { console.log(`User's choice: ${userResponse}`) }); }
您可以在以下plunker中看到所有这些:http://plnkr.co/edit/yYIx1m1e2nfK0nxFwYLJ?p=preview
angular – ngx-bootstrap modal – 通过bsModalRef.content访问传入modal的数据
this.bsModalRef = this.modalService.open(MyComponent); this.bsModalRef.content.somedata = [...some array of products];
这一切都很好,然后我的模态可以访问名为somedata的属性.太棒了.我遇到的问题是我想对somedata执行一些计算.假设somedata是具有金额的产品列表,我希望模态将金额减少到单个值.我如何知道模态类中何时可以获得该数据?我可以使用setTimeout hack,它可以工作,但让我觉得内心很蠢.有什么样的生命周期钩子像ngOnChanges那样ngx-bootstrap实现了所以我可以知道数据属性何时被设置,进一步,当它改变时?
解决方法
public set somedata(val) { // here you process data }
请记住,this.bsModalRef.content包含对话框组件的所有公共成员(在您的情况下为MyComponent).
关于Angular中的Mock NgbModal和Angular中的spa是哪三个单词缩写的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于angular modal 详解、Angular uibModal,解析,未知提供程序、angular – ngbModal作为通用的Confrimation Box、angular – ngx-bootstrap modal – 通过bsModalRef.content访问传入modal的数据等相关知识的信息别忘了在本站进行查找喔。
本文标签: