用户可以点击图标打开选择器,我可以picker.open()打开它。但是,它会在我做任何事情时立即关闭(选择一天,点击其他地方等)。有办法让它保持开放吗?
我读到在angularjs material1中不可能。现在有可能吗?
答案 0 :(得分:1)
虽然不是推荐的解决方案,但您可以这样做:
<md-input-container>
<input mdInput [mdDatepicker]="picker" placeholder="Choose a date">
<button mdSuffix [mdDatepickerToggle]="picker" (click)="pickerOpened()"></button>
</md-input-container>
<md-datepicker #picker></md-datepicker>
@ViewChild(MdDatepicker) datepicker
pickerOpened() {
setTimeout(() => this.datepicker.opened = false);
}
答案 1 :(得分:-3)
查看
<div ng-app="MyApp" ng-controller="MyController" layout-padding>
{{ date }}<br />
<input type="date" ng-model="date" ng-click="openDatePicker()" ng-show="!datePickerOpened">
<md-calendar class="fixed-calendar" ng-show="datePickerOpened" ng-model="date"></md-calendar>
</div>
CSS
.fixed-calendar {
width: 340px;
height: 340px;
display: block;
}
.fixed-calendar .md-calendar-scroll-mask {
width: 340px !important;
}
.fixed-calendar .md-virtual-repeat-scroller {
width: 340px !important;
height: 308px;
}
应用
Angular
.module('MyApp', ['ngMaterial'])
.controller('MyController', function($scope, $timeout) {
//Init
$scope.datePickerOpened = false;
$scope.date = new Date();
//show datepicker action
$scope.openDatePicker = function () {
//show datepicker
$scope.datePickerOpened = true
//avoid date set to 1933 by async reinit date after ng-show rendering
$timeout(function () {
$scope.date = new Date();
});
}
});